logo资料库

Cos组件实现上传下载.doc

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
上传页面注意两点:
1. method="post" 上传文件的时候要设置成 post 方式提交 2. enctype="multipart/form-data" 编码方式设置成 multipart/form-data 类型 处理上传的 servlet: String saveDirectory = "D://test"; 声明上传的保存路径,也可用 request.getSession().getServletContext().getRealPath("/")来获得项目路 径,并保存在一个文件夹中。 int maxPostSize = 5*1024*1024; RandomFileRenamePolicy rfrp = new RandomFileRenamePolicy(); 实现重命名 策略,即实现FileRenamePolicy接口,重写rename方法 声明一次上传的文件最大为5M MultipartRequest multi = new MultipartRequest(request,saveDirectory,maxPostSize,"utf-8",rfrp); 通过此类就可实现文件的上传,此时 form 表单中的参数通过 request.getParameter("name")不能取得参数的值,要通过 multi.getParameter("name")来或得参数的值。 枚举类保存文件名称: Enumeration filedFileNames = multi.getFileNames(); String filedName = null; if (null != filedFileNames) { while (filedFileNames.hasMoreElements()) { filedName = filedFileNames.nextElement();// 文件文本框的名称 // 获取该文件框中上传的文件,即对应到上传到服务器中的文件 File uploadFile = multi.getFile(filedName); if (null != uploadFile && uploadFile.length() > 0) { 上传后文件的名字 System.out.println(uploadFile.getName()); 上传后文件的路径 System.out.println(uploadFile.getPath()); 上传后文件的长度 System.out.println(uploadFile.length()); } // 获取未重命名的文件名称 String Originalname = multi.getOriginalFileName(filedName); System.out.println(Originalname); } } 实现重命名策略接口,避免文件上传后重名冲突 import java.io.File; import java.util.Date; import com.oreilly.servlet.multipart.FileRenamePolicy;
public class RandomFileRenamePolicy implements FileRenamePolicy { public File rename(File file){ String body = ""; String ext = ""; int pot = file.getName().lastIndexOf('.'); if(pot!=-1){ body = (new Date()).getTime() + ""; ext = file.getName().substring(pot); }else{ body = (new Date()).getTime() + ""; ext = ""; } String newName = body + ext; file = new File(file.getParent(),newName); return file; } } 文件下载页面: 下载 链接到已存在的文件 Filename为参数名 处理下载的servlet: String fileName = request.getParameter("fileName"); 获取下载文件名 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8")); 设置头信息 // 采用COS提供的ServletUtils类完成文件下载 // 在ServletUtils中一共提供了7个静态方法,可以实现不同场景的文件下载以及其它需求 // 其中使用returnFile()可以下载本地的文件,使用returnURL()可以下载网络上的文件 ServletUtils.returnFile(filePath + "//" + fileName,response.getOutputStream()); 此处下载本地文件 通过上面的例子可实现简单的文件上传下载,更多详情可查阅文档
分享到:
收藏