SmartUpload实现文件的上传与下载
2016-12-21 00:00
519 查看
摘要: 主要是介绍servlet中文件的上传与下载实现。这里用的是SmartUpload组件进行实现文件的上传以及下载
###1.文件上传页面端的配置
页面端的
gbk
设置```
enctype:”multipart/form-data”
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
list.add(fileName);
}
}
request.setAttribute("list", list);
request.getRequestDispatcher("main.jsp").forward(request, response);
SmartUpload su = new SmartUpload();
su.initialize(this,request,response);
try {
su.downloadFile(path);
} catch (SmartUploadException e) {
e.printStackTrace();
}
String name = request.getParameter("fname");
String path = this.getServletContext().getRealPath("files");
path = path + java.io.File.separator + name;
###1.文件上传页面端的配置
页面端的
encode:gbk(要将页面端的字符编码设置为```
gbk
1. 表单提交方式:``` post
设置```
enctype:”multipart/form-data”
###2.常见的servlet上传组件 1. apache comments FileUpload 1. SmartUpload(下面我主要以这种为例,实现文件上传) ### 3.SmartUpload实现文件上传的步骤(见代码即可) 1. 具体操作步骤代码
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//获取服务器指定目录的绝对路径 String dir = this.getServletContext().getRealPath("files"); List list = new ArrayList(); //创建文件上传组件对象 SmartUpload su = new SmartUpload(); //初始化请求,响应及配置 try { su.initialize(this, request, response); //设置允许上传的文件列表 su.setAllowedFilesList("txt,png,jpg,gif,doc,xls"); //设置允许单个文件的最大大小 su.setMaxFileSize(1024*1024*20); //设置允许总共文件的上传大小 su.setTotalMaxFileSize(1024*1024*100); //上传 su.upload(); /**********获取上传过来文件**********/ Files files = su.getFiles(); //获取上传的文件数 int count = files.getCount(); //System.out.println("上传的文件数:"+count); for(int i = 0;i < count;i++){ //注意与io包中的file区别 com.jspsmart.upload.File file = files.getFile(i); //获取文件名称 String fileName = file.getFileName(); if(!"".equals(fileName)){ //将当前文件存储到服务器的指定位置中 //java.io.File.separator与项目有关的分隔符 file.saveAs(dir+java.io.File.separator+fileName); list.add(fileName); } } request.setAttribute("list", list); request.getRequestDispatcher("main.jsp").forward(request, response); } catch (SmartUploadException e) { e.printStackTrace(); } }
### 4.文件的下载 1. 接着上面上传的例子,如果我的文件上传完成后,在指定目录 下面会有我们指定的文件,现在,上传完成后,我们跳转到指定页面,跳转的同时,我们传递参数文件名的集合(因为我们要根据文件名进行下载)。
list.add(fileName);
}
}
request.setAttribute("list", list);
request.getRequestDispatcher("main.jsp").forward(request, response);
1. 我们在页面上获取到文件名之后进行下载指定文件
<c:forEach items="${list}" var="fileName"> <P><a href="DownloadServlet?fname=${fileName}">${fileName}</a></P> </c:forEach>
1. 下载部分,这里讲两种方法 1. 利用smartUpload
SmartUpload su = new SmartUpload();
su.initialize(this,request,response);
try {
su.downloadFile(path);
} catch (SmartUploadException e) {
e.printStackTrace();
}
1. 因为我们已经获得文件的位置,我们根据之前我们读取文件的方式进行下载文件
String name = request.getParameter("fname");
String path = this.getServletContext().getRealPath("files");
path = path + java.io.File.separator + name;
/*BufferedInputStream bis = new BufferedInputStream(new FileInputStream(path)); //设置响应方式,以附件响应 response.setHeader("Content-Disposition", "attachment;filename="+new String(name.getBytes("gbk"),"iso-8859-1")); BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); byte[] b = new byte[1024]; int len = 0; while((len = bis.read(b)) != -1){ bos.write(b,0,len); } bos.close(); bis.close();*/
**关于第一种方式,目前我没有遇见中文乱码的问题,如果出现则估计不好解决。则可以采用第二种方式 ** **第二种方式就是我们要设置响应方式,以附件形式响应,同时filename的部分,如果name是中文,我们 需要现将name以gbk的形式进行读取,然后又转码成"iso-8859-1",不然是下载不了图片的。 **
相关文章推荐
- 使用smartUpload实现文件的上传与下载
- 用SmartUpload实现文件的上传下载(在servlet中实现)
- Smartupload 实现文件的上传与下载
- SmartUpload上传组件实现文件的上传和下载功能
- 3、应用SmartUpload实现文件上传下载
- SmartUpload实现文件上传和下载
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- 利用FTPClient类实现文件的上传下载功能
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- Asp.net中文件上传下载的简单实现
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载).NET技术
- 在Oracle中存取BLOB对象实现文件的上传和下载
- 利用Indy的TIdFtp控件实现FTP协议, 远程下载上传文件
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- 项目开发技巧(四):使用JspSmartupload实现文件上传下载(二):jspSmartUpload上传下载全攻略(ZZ)
- 无组件实现文件上传/下载
- 在Oracle中存取BLOB对象实现文件的上传和下载
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- Asp.net 2.0 用 FileUpload 控件实现多文件上传 用户控件(示例代码下载)
- ASP.NET实现文件的上传与下载(包括用数据库存取文件)