/**
* 按照自己的规则重命名上传文件
* @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`可能是批量上传功能的入口页面...
6. **save.asp**:这是一个ASP文件,可能是服务器端处理文件上传的核心代码,接收前端通过Ajax发送的文件数据,处理并保存文件。 7. **demo.css**:这个文件包含CSS样式,用于美化和布局上传界面。 8. **loading....
这个组件提供了全面的文件上传解决方案,支持单个文件上传以及批量文件上传,同时还包括了对普通表单域的处理。在本示例中,我们将深入探讨SmartUpload的使用方法及其在文件上传和批量下载中的应用。 首先,我们来...
在实际应用中,批量上传功能可能会进一步集成到数据库操作中,比如将上传的图片与数据库中的记录关联,或者对上传的文件进行处理(如压缩、格式转换)后再存储。此外,安全性也是一个重要的考虑因素,例如防止恶意...
标题中的“nexus二进制库Jar包批量上传脚本工具”是指用于自动化上传Java的JAR文件到Nexus仓库的脚本程序。Nexus是一个流行的仓库管理器,广泛应用于软件开发环境中,尤其是Java生态系统,它能管理和分发各种类型的...
Node.js的fs模块可以用来操作文件系统,接收前端上传的Blob数据并保存为本地文件。 6. **PHP中文网相关资源** 提供的文件列表中包含"php中文网下载站.txt"和"php中文网下载站.url",这可能是开发者在学习过程中...
6. **性能优化**:批量上传可能会占用大量带宽和服务器资源,因此,可能需要实施一些优化策略,如分批上传、压缩文件、异步处理等。 7. **安全性考虑**:防止恶意文件上传是必须的,如防止上传脚本文件或病毒。可以...
在移动应用开发中,图片处理...总的来说,`mui`图片压缩上传及回显结合Java后台的实现,涉及到前端的图片处理、文件上传,以及后端的文件接收和返回。通过合理的代码组织和优化,可以构建出高效、稳定的图片上传功能。
在PHP中实现压缩文件的上传与下载功能是Web开发中常见的需求,这涉及到文件操作、HTTP请求...以上就是PHP实现压缩文件上传与下载功能涉及的主要知识点,实际开发中还需要结合具体业务需求和服务器环境进行调整和优化。
总结,实现H5图片批量压缩上传涉及到前端的图片处理、批量操作、Ajax请求以及后端的文件接收和存储等多个环节。理解并掌握这些技术,能帮助我们构建高效且用户体验良好的Web应用。在实际开发中,还应注意错误处理、...
总之,ASP.NET插件Uploadify为开发者提供了强大且灵活的文件上传解决方案,无论是单个文件上传还是批量文件上传,都能轻松应对。通过掌握Uploadify的配置和使用,可以极大地提升用户体验,简化文件管理流程。
4. **处理响应**:TinyPNG服务返回压缩后的图片数据,工具需要接收并保存到本地,通常替换原文件或者保存为新文件。 5. **错误处理**:在上传、压缩或保存过程中,可能会遇到各种错误,如网络问题、API调用限制等。...
处理完成后,图片会被保存到服务器的某个目录下,并可能返回一个URL供前端展示或者记录图片的元数据。 在实现这样的功能时,开发者需要注意以下几点: 1. 安全性:确保只接受特定类型的文件(如jpg、png),防止...
在传统的ASP.NET应用中,通常只能单个文件上传,而批量上传控件则解决了这个问题,使得处理大量图片变得更加高效。下面将详细讨论相关知识点。 1. **控件实现原理**: - ASP.NET批量上传控件基于HTML5的`multiple`...
8. **服务器端处理**:源码中可能包含与服务器端通信的部分,如接收上传的数据、保存文件到服务器、返回确认信息等。 开发人员在使用这套源码时,需要根据自身项目的需求对源码进行调整,如改变文件存储路径、调整...
在前端开发中,有时我们需要处理文件的压缩与解压缩操作,比如用户上传的压缩文件或者需要下载的压缩文件。在这种情况下,JavaScript库如jsZip就显得尤为重要。jsZip是一个强大的库,它允许开发者在浏览器环境中进行...
4. **错误处理与验证**:在接收文件时,需要进行大小限制、类型检查等验证,以防止大文件导致服务器资源耗尽或者恶意文件上传。 5. **安全考虑**:确保上传的文件被保存在一个安全的目录,避免用户通过直接URL访问...
6. **保存压缩图片**:将缩放后的图像数据保存为新的文件,通常会降低图片质量以减小文件大小。 7. **返回结果**:在服务器端脚本中,将新图片的URL作为响应返回给KindEditor,编辑器会将其插入到文档中。 此外,还...
7. **验证结果**:上传完成后,登录服务器检查文件是否成功上传并正确保存。 在使用ServerLight批量上传时,需要注意网络环境的稳定性和服务器的容量,以及确保所有上传的文件都符合服务器的安全策略。如果遇到问题...