明日计划:团队开发Fooks第七天

一、明日计划

将项目与团队进行整合,进行完整的数据库设计

二、今日成果

上面是成功通过App上传到云服务器的文件

部分代码

package Servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.IOUtils;

public class DServlet extends HttpServlet {


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         boolean isMultipart = ServletFileUpload.isMultipartContent(request);
            if (isMultipart) {// 判断提交上来的数据是否是表单的数据
                
                //得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
                String savePath = this.getServletContext().getRealPath("/Book");
                File file = new File(savePath);
                //判断上传文件的保存目录是否存在
                if (!file.exists() && !file.isDirectory()) {
                    System.out.println(savePath+"目录不存在,需要创建");
                    //创建目录
                    file.mkdir();
                }

                DiskFileItemFactory factory = new DiskFileItemFactory();// 1、创建一个DiskFileItemFactory工厂
                ServletFileUpload upload = new ServletFileUpload(factory);// 2、创建一个文件上传解析器
                upload.setHeaderEncoding("utf-8");//编码方式

                try {
                    // 4、使用ServletFileUpload解析器解析上传的数据,解析结果是一个List<FileItem>
                    // 集合,每一个FileItem对应一个Form表单的输入项
                    List<FileItem> items = upload.parseRequest(request);

                    for (FileItem item : items) {
                        if (item.isFormField()) {//如果是文本
                            String name = item.getFieldName();
                            String value = item.getString("utf-8");//以utf-8进行编码
                            System.out.println(name);
                        } else {// 如果是文件
                            String filename = item.getName();
                             System.out.println("filename=" + filename);
                            if (null == filename || "".equals(filename.trim())) {
                                continue;
                            }
                            filename = filename.substring(filename
                                    .lastIndexOf("/") + 1);//将文件名剪出
                            InputStream is = item.getInputStream();//得到上传的输入流
                            FileOutputStream out = new FileOutputStream(savePath + "/" 
                                    + filename);//创建写入磁盘的输出流

                            byte[] b = new byte[1024 * 1024];//缓冲区
                            int len = 0;
                            while ((len = is.read(b)) != -1) {
                                out.write(b, 0, len);
                                out.flush();
                            }
                            is.close();
                            out.close();
                            item.delete();
                            // 处理文件上传时生成的临时文件
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        
        
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}
DServlet

 

posted @ 2020-04-21 21:48  夜月薇凉映银弩  阅读(187)  评论(0编辑  收藏  举报