文件的上传和下载

xiaoxiao2021-02-27  330

文件的上传和下载

用JFinal方式的

html页面获取文件 需要有属性enctype="multipart/from-data"  后台需要通过gitFile的方法才能解析出来request里面的内容,参数和数据。

想要保存文件到服务器端并且保存到数据库,需要分为两步

1.先把文件保存在服务器端 WebRoot/upload下面:

string url=getWebRootPath()+"\\upload\\"+"自己定义的文件名字"

File filePath = new File(url);//先在根目录下面创建文件夹

Map<String, Object> map = UploadUtils.getFile(request, response, dirpath);//其中的request和response可以不要的 只要一个文件的路径就行

下面是对应的工具类的方法;

File uploadFile = new File(url);   if (!uploadFile.exists()) {    //如果目标路径不存在新建一个  id  file    uploadFile.mkdirs();   }

boolean isMultipart = ServletFileUpload.isMultipartContent(request);   if (isMultipart) {    DiskFileItemFactory factory = new DiskFileItemFactory();    // 指定在内存中缓存数据大小,单位为byte,这里设为1Mb    factory.setSizeThreshold(1024 * 1024);    // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录    factory.setRepository(new File("D:\\temp"));    // Create a new file upload handler    ServletFileUpload upload = new ServletFileUpload(factory);    // 指定单个上传文件的最大尺寸,单位:字节,这里设为50Mb    upload.setFileSizeMax(50 * 1024 * 1024);    // 指定一次上传多个文件的总尺寸,单位:字节,这里设为50Mb    upload.setSizeMax(50 * 1024 * 1024);    upload.setHeaderEncoding("UTF-8");    List<FileItem> items = null;    try {     // 解析request请求     items = upload.parseRequest(request);    } catch (FileUploadException e) {     e.printStackTrace();    }    if (items != null) {     // 解析表单项目     Iterator<FileItem> iter = items.iterator();     while (iter.hasNext()) {      FileItem item = iter.next();      // 如果是普通表单属性      if (item.isFormField()) {       // 相当于input的name属性 <input type="text" name="content">       String name = item.getFieldName();       // input的value属性       String value = item.getString();       // System.out.println("属性:" + name + " 属性值:" + value);       if("uid".equals(name)){                          String p_id = value;                          map.put("p_id", p_id);                         }else if("remark".equals(name)){                          String remark = value;                          map.put("remark", remark);                         }else if("fileName".equals(name)){                          String fileName = value;                          map.put("fileName", fileName);                         }             }      // 如果是上传文件      else {       // 属性名       Long fieldSize = item.getSize();       // 上传文件名称       String fileName=(String) map.get("fileName");       fileName = fileName.substring(fileName.lastIndexOf("/") + 1);// 获得上传文件的文件名       map.put("fieldSize", fieldSize);       try {        item.write(new File(url,fileName));        map.put("flagMsg", "true");       } catch (Exception e) {        e.printStackTrace();       }      }     }    }else{     map.put("flagMsg", "false");    }   } 如上代码就是保存在服务器端了 然后就是保存数据库里 存放的是文件的名字 大小及时间;

转载请注明原文地址: https://www.6miu.com/read-4829.html

最新回复(0)