jsp中用fileupload组件上传文件遇到的问题
2013-07-27 19:47
405 查看
之前做了参考网上fileupload组件写了一个文件上传下载的简易系统,其中遇到一些问题,在这里作一些记录:
1.关于文件的存放位置
可根据文件的类型或者所属的项目分开存放,用mkdirs方法即可,
File dirFile = new File(filepath);
if(!(dirFile.exists()) && !(dirFile.isDirectory())){
dirFile.mkdirs();
}
2.关于文件重命名,此处我采用了原名+年月日+序号+后缀来命名,这样的话比较方便管理,也便于直接查看其上传日期,
直接调用这个类方法即可实现重命名
3.多文件上传:
4.时间监控进度
采用progresslistener监听上传进度,界面settimeout即可实时获取上传进度,这部分界面就暂且使用文字描述了(%)
5.关于文件下载
只需找到文件路径,这里我设置的是上传的路径,因为上传直接可以下载,所以放在了一起
这样便可实现对指定文件的下载
6.文本域和文件域的区分
和多文件上传一样判断,对应获取输入框的值即可.
至此文件上传下载的基本功能算是完成了接下来准备继续完善此系统,比如说加上一个断点续传.尽量完善吧.
在此感谢网上大牛们,这次功能很多都是从网上找的资料实现的.thanks.
1.关于文件的存放位置
可根据文件的类型或者所属的项目分开存放,用mkdirs方法即可,
File dirFile = new File(filepath);
if(!(dirFile.exists()) && !(dirFile.isDirectory())){
dirFile.mkdirs();
}
2.关于文件重命名,此处我采用了原名+年月日+序号+后缀来命名,这样的话比较方便管理,也便于直接查看其上传日期,
public class FileRename { public String getNewFileName(String originalFileName, String middleName, String filepath) { StringBuffer newFileName = new StringBuffer(); if (null != originalFileName && !"".equals(originalFileName)) { int no = 1; int port = originalFileName.lastIndexOf("."); String type = ""; String fileName = ""; if (port != -1) { type = originalFileName.substring(port + 1); } fileName = middleName; JsonDateValueProcessor jdvp = new JsonDateValueProcessor(); JsonConfig jc = new JsonConfig(); StringBuffer suffix = new StringBuffer(""); suffix.append(jdvp.processArrayValue(new Date(), jc)); do { newFileName.delete(0, newFileName.length()); newFileName.append(fileName); newFileName.append(suffix); newFileName.append("-"); if (no < 10) { newFileName.append("000" + String.valueOf(no)); } else if (no < 100) { newFileName.append("00" + String.valueOf(no)); } else if (no < 1000) { newFileName.append("0" + String.valueOf(no)); } newFileName.append("."); newFileName.append(type); no++; } while (new File(filepath + "\\" + newFileName).exists()); } return newFileName.toString(); } }
直接调用这个类方法即可实现重命名
3.多文件上传:
if (item.isFormField()) { //do something }else{ //fileupload }这样便可轻松实现多文件上传
4.时间监控进度
采用progresslistener监听上传进度,界面settimeout即可实时获取上传进度,这部分界面就暂且使用文字描述了(%)
public class MyProgressListener implements ProgressListener{ private HttpSession session; private FileUploadStatus fileuploadstatus; public MyProgressListener(HttpServletRequest request){ session = request.getSession(); } public void update(long pBytesRead,long pContentLength,int pItems){ System.out.println("Listener is been used"); fileuploadstatus = (FileUploadStatus) (session.getAttribute("fileUploadStatus") == null ? new FileUploadStatus() : session.getAttribute("fileUploadStatus")); fileuploadstatus.setpBytesRead(pBytesRead); fileuploadstatus.setpContentLength(pContentLength); fileuploadstatus.setpItems(pItems); session.setAttribute("fileUploadStatus", fileuploadstatus); } }
5.关于文件下载
只需找到文件路径,这里我设置的是上传的路径,因为上传直接可以下载,所以放在了一起
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String filepath = new String(request.getParameter("filePath").getBytes("ISO-8859-1"),"UTF-8"); System.out.println(filepath); String fileName = new String(request.getParameter("fileName").getBytes("ISO-8859-1"),"UTF-8"); System.out.println(fileName); FileInputStream fis = new FileInputStream(new File(filepath + "\\" + fileName)); System.out.println("Client type:" + request.getHeader("User-Agent")); if(request.getHeader("User-Agent").contains("MSIE")){ response.addHeader("content-disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName,"UTF-8")); }else{ response.addHeader("content-disposition", "attachment;filename=" + request.getParameter("fileName")); } ServletOutputStream sos = response.getOutputStream(); int count = 0; byte[] bytes = new byte[1024]; while((count = fis.read(bytes)) != -1){ sos.write(bytes, 0, count); } sos.flush(); sos.close(); }
这样便可实现对指定文件的下载
6.文本域和文件域的区分
和多文件上传一样判断,对应获取输入框的值即可.
至此文件上传下载的基本功能算是完成了接下来准备继续完善此系统,比如说加上一个断点续传.尽量完善吧.
在此感谢网上大牛们,这次功能很多都是从网上找的资料实现的.thanks.
相关文章推荐
- 我遇到的问题JspSmartUpload组件实现表单和文件同时上传
- 在Tomcat6.0+IIS6.0+Windows Server2003环境下,JSP(Common-FileUpload)文件上传的问题
- FileUpload组件 上传不了文件的问题
- JSP使用commons-fileupload组件实现文件上传代码示例
- commons-fileUpload组件解决文件上传乱码问题
- 真正解决jspSmartUpload组件上传下载文件时中文乱码问题!!!
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- JSP 组件上传文件(common-fileupload)
- JSP组件commons-fileupload实现文件上传
- JSP文件上传组件--SmartUpload需要注意的问题
- 使用jsp/servlet简单实现文件上传所遇到的问题
- 【java】[文件上传jar包]commons-fileUpload组件解决文件上传(文件名)乱码问题
- JSP文件上传--FileUpload组件
- JSP页面/Apache FileUpload组件上传文件的同时,传递其他参数的方法
- jsp、servlet上传文件遇到的问题
- JAVA学习提高之---- FileUpload组件实现多文件上传(JSP+SERVLET)实现
- 解决Apache的文件上传组件FileUpLoad的中文乱码问题
- JSP组件commons-fileupload实现文件上传
- 在JSP环境中利用Commons-fileupload组件实现文件上传
- 在JSP环境中利用Commons-fileupload组件实现文件上传