`

批量文件上传,压缩后保存到服务器

阅读更多

    /**
     * 按照自己的规则重命名上传文件
     * @author:qiuchen
     * @createTime:2012-6-19
     * @param name
     * @return 命名后的文件名
     */
    private static String rename(String name){
        Long now = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); 
       
        Long random = (long) (Math.random() * now); 
       
        String fileName = now + "" + random; 
       
        if (name.indexOf(".") != -1) { 
            fileName += name.substring(name.lastIndexOf(".")); 
        } 
 
        return fileName; 
    } 

 

    /**
     * 压缩后的文件名
     * @author:qiuchen
     * @createTime:2012-6-19
     * @param name
     * @return
     */
    private static String zipName(String name) { 
     String prefix = ""; 
     if (name.indexOf(".") != -1) { 
      prefix = name.substring(0, name.lastIndexOf(".")); 
        } else { 
            prefix = name; 
        }
        return prefix + ".zip"; 
    }

 

    /**
     * 批量上传文件

     * 把上传文件压缩后保存到服务器
     * @author:qiuchen
     * @createTime:2012-6-19
     * @param request
     * @param params
     * @param values
     * @return
     * @throws Exception
     */
 public static List<Map<String, Object>> upload(HttpServletRequest request,
   String[] params, Map<String, Object[]> values) throws Exception {
  
  List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();
  //文件处理器
  MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;
  //上传文件集合
  Map<String, MultipartFile> fileMap = mRequest.getFileMap();
  //获取文件存放地址(文件夹)
  String uploadDir = request.getSession().getServletContext().getRealPath("/") + FileOperateUtil.UPLOADDIR;
  //创建文件夹
  File file = new File(uploadDir);
  if (!file.exists()) {
   file.mkdir();
  }
  
  String fileName = null;
  int i = 0;
  for (Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet().iterator(); it.hasNext(); i++) {
   
   Map.Entry<String, MultipartFile> entry = it.next();
   MultipartFile mFile = entry.getValue();
   //原始文件名
   fileName = mFile.getOriginalFilename();
   //文件重命名
   String storeName = rename(fileName);
   //文件全路径
   String noZipName = uploadDir + storeName;
   //获取压缩文件的路径
   String zipName = zipName(noZipName);
   
   // 上传成为压缩文件
   ZipOutputStream outputStream = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipName)));
   
   outputStream.putNextEntry(new ZipEntry(fileName));
   //从流中复制出来
   FileCopyUtils.copy(mFile.getInputStream(), outputStream);
   
   Map<String, Object> map = new HashMap<String, Object>();
   // 固定参数值对
   map.put(FileOperateUtil.REALNAME, zipName(fileName));
   map.put(FileOperateUtil.STORENAME, zipName(storeName));
   map.put(FileOperateUtil.SIZE, new File(zipName).length());
   map.put(FileOperateUtil.SUFFIX, "zip");
   map.put(FileOperateUtil.CONTENTTYPE, "application/octet-stream");
   map.put(FileOperateUtil.CREATETIME, new Date());

   // 表单参数值对
   for (String param : params) {
    map.put(param, values.get(param)[i]);
   }
   result.add(map);
  }
  return result;
 }

分享到:
评论

相关推荐

    文件批量上传客户端免费组件

    【文件批量上传客户端免费组件】是一款基于ASP技术开发的实用工具,主要针对网站或服务器的文件上传需求,尤其适用于需要处理大量文件上传的场景。ASP(Active Server Pages)是微软公司开发的一种服务器端脚本环境...

    批量上传文件

    在服务器端,我们需要接收这些文件并保存到指定位置。这通常涉及到文件流的处理,以及错误处理机制。例如,在Node.js中,我们可以使用`multer`中间件来处理上传的文件。 `index.html`可能是批量上传功能的入口页面...

    html5 + ASP +Ajax 前端免刷新多文件批量上传 免组件

    6. **save.asp**:这是一个ASP文件,可能是服务器端处理文件上传的核心代码,接收前端通过Ajax发送的文件数据,处理并保存文件。 7. **demo.css**:这个文件包含CSS样式,用于美化和布局上传界面。 8. **loading....

    SmartUpload文件上传,批量下载

    这个组件提供了全面的文件上传解决方案,支持单个文件上传以及批量文件上传,同时还包括了对普通表单域的处理。在本示例中,我们将深入探讨SmartUpload的使用方法及其在文件上传和批量下载中的应用。 首先,我们来...

    批量上传的Demo

    在实际应用中,批量上传功能可能会进一步集成到数据库操作中,比如将上传的图片与数据库中的记录关联,或者对上传的文件进行处理(如压缩、格式转换)后再存储。此外,安全性也是一个重要的考虑因素,例如防止恶意...

    【nexus二进制库Jar包批量上传脚本工具】

    标题中的“nexus二进制库Jar包批量上传脚本工具”是指用于自动化上传Java的JAR文件到Nexus仓库的脚本程序。Nexus是一个流行的仓库管理器,广泛应用于软件开发环境中,尤其是Java生态系统,它能管理和分发各种类型的...

    H5移动前端图片批量压缩上传

    Node.js的fs模块可以用来操作文件系统,接收前端上传的Blob数据并保存为本地文件。 6. **PHP中文网相关资源** 提供的文件列表中包含"php中文网下载站.txt"和"php中文网下载站.url",这可能是开发者在学习过程中...

    图片批量上传 asp

    6. **性能优化**:批量上传可能会占用大量带宽和服务器资源,因此,可能需要实施一些优化策略,如分批上传、压缩文件、异步处理等。 7. **安全性考虑**:防止恶意文件上传是必须的,如防止上传脚本文件或病毒。可以...

    mui图片压缩上传及回显(包含java后台)

    在移动应用开发中,图片处理...总的来说,`mui`图片压缩上传及回显结合Java后台的实现,涉及到前端的图片处理、文件上传,以及后端的文件接收和返回。通过合理的代码组织和优化,可以构建出高效、稳定的图片上传功能。

    php实现的压缩文件的上传与下载功能模块.rar

    在PHP中实现压缩文件的上传与下载功能是Web开发中常见的需求,这涉及到文件操作、HTTP请求...以上就是PHP实现压缩文件上传与下载功能涉及的主要知识点,实际开发中还需要结合具体业务需求和服务器环境进行调整和优化。

    H5图片压缩上传(批量)

    总结,实现H5图片批量压缩上传涉及到前端的图片处理、批量操作、Ajax请求以及后端的文件接收和存储等多个环节。理解并掌握这些技术,能帮助我们构建高效且用户体验良好的Web应用。在实际开发中,还应注意错误处理、...

    ASP.NET插件uploadify批量上传文件完整使用教

    总之,ASP.NET插件Uploadify为开发者提供了强大且灵活的文件上传解决方案,无论是单个文件上传还是批量文件上传,都能轻松应对。通过掌握Uploadify的配置和使用,可以极大地提升用户体验,简化文件管理流程。

    提供一个NodeJS环境下基于TinyPNG服务的批量压缩任意数量图片的工具。

    4. **处理响应**:TinyPNG服务返回压缩后的图片数据,工具需要接收并保存到本地,通常替换原文件或者保存为新文件。 5. **错误处理**:在上传、压缩或保存过程中,可能会遇到各种错误,如网络问题、API调用限制等。...

    Asp.Net+flash批量上传图片+预览(此版带版权)

    处理完成后,图片会被保存到服务器的某个目录下,并可能返回一个URL供前端展示或者记录图片的元数据。 在实现这样的功能时,开发者需要注意以下几点: 1. 安全性:确保只接受特定类型的文件(如jpg、png),防止...

    asp.net 图片批量上传控件

    在传统的ASP.NET应用中,通常只能单个文件上传,而批量上传控件则解决了这个问题,使得处理大量图片变得更加高效。下面将详细讨论相关知识点。 1. **控件实现原理**: - ASP.NET批量上传控件基于HTML5的`multiple`...

    SWF多文件批量上传源码

    8. **服务器端处理**:源码中可能包含与服务器端通信的部分,如接收上传的数据、保存文件到服务器、返回确认信息等。 开发人员在使用这套源码时,需要根据自身项目的需求对源码进行调整,如改变文件存储路径、调整...

    基于jsZip库 解压读取文件 对文件重命名 删除文件 打包文件 下载到本地

    在前端开发中,有时我们需要处理文件的压缩与解压缩操作,比如用户上传的压缩文件或者需要下载的压缩文件。在这种情况下,JavaScript库如jsZip就显得尤为重要。jsZip是一个强大的库,它允许开发者在浏览器环境中进行...

    基于ASP的文件批量上传客户端ASP免费组件.zip

    4. **错误处理与验证**:在接收文件时,需要进行大小限制、类型检查等验证,以防止大文件导致服务器资源耗尽或者恶意文件上传。 5. **安全考虑**:确保上传的文件被保存在一个安全的目录,避免用户通过直接URL访问...

    kindeditor上传图片自动压缩过大的图片

    6. **保存压缩图片**:将缩放后的图像数据保存为新的文件,通常会降低图片质量以减小文件大小。 7. **返回结果**:在服务器端脚本中,将新图片的URL作为响应返回给KindEditor,编辑器会将其插入到文档中。 此外,还...

    ServerLight批量上传

    7. **验证结果**:上传完成后,登录服务器检查文件是否成功上传并正确保存。 在使用ServerLight批量上传时,需要注意网络环境的稳定性和服务器的容量,以及确保所有上传的文件都符合服务器的安全策略。如果遇到问题...

Global site tag (gtag.js) - Google Analytics