文件的上传和下载

来源:互联网 发布:赶聪互刷源码 编辑:程序博客网 时间:2024/06/05 17:21

文件的上传和下载

用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");
   }
  }
如上代码就是保存在服务器端了
然后就是保存数据库里 存放的是文件的名字 大小及时间;

0 0
原创粉丝点击