SmartUpload上传下载使用
来源:互联网 发布:sql语句insert 编辑:程序博客网 时间:2024/04/30 02:34
由于工作需要,用到了SmartUpload来实现文件的上传下载功能,写了小demo记录下,方便以后使用。
上传部分:
表单上传页面 upload.jsp:
此处需要注意的有三点:
1.提交方式为“post”
2.由于是文件上传,不是普通的提交请求参数,所以要将表单封装,需要添加enctype="mutipart/form-data"属性
3.保证在应用根目录下有存放上传文件的"upload"文件夹
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>文件上传表单页</title></head><body><form action="uploadProc.jsp" method="post" enctype="multipart/form-data">选择上传的文件:<input type="file" name="file"><input type="submit" value="提交"></form></body></html>
处理文件上传的jsp uploadProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@page import="com.jspsmart.upload.*, java.io.*, java.util.*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>文件上传处理页</title></head><body><%SmartUpload smart = new SmartUpload();//初始化上传smart.initialize(pageContext);//准备上传smart.upload();Request smartReq = smart.getRequest();Date time = new Date();//为了防止用户上传的文件重复,用当前毫秒数作为保存的文件名String saveFileName = String.valueOf(time.getTime());session.setAttribute("saveFileName", saveFileName);for(int i=0;i<smart.getFiles().getCount();i++){//获取上传的文件com.jspsmart.upload.File file = smart.getFiles().getFile(i);//将文件以毫秒值为名称另存为应用下upload下的文件// 另存到操作系统的根目录为文件根目录的目录下//file.saveAs(request.getRealPath("/upload/"+saveFileName+".txt"),smart.SAVE_PHYSICAL);// 另存到以WEB应用程序的根目录为文件根目录的目录下//file.saveAs("/upload/"+saveFileName+".txt", smart.SAVE_VIRTUAL);file.saveAs("/upload/"+saveFileName+".txt");}request.getRequestDispatcher("download.jsp").forward(request, response);%></body></html>
下载部分:
下载页面 download.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="com.jspsmart.upload.*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>文件下载</title></head><body><a href="downloadProc.jsp">下载</a></body></html>
处理下载的jsp downloadProc.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ page import="com.jspsmart.upload.*" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>文件下载处理页</title></head><body><%//新建一个smartUploadSmartUpload smart = new SmartUpload();//初始化smart.initialize(pageContext);// 设定contentDisposition为null以禁止浏览器自动打开文件,//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为//doc时,浏览器将自动用word打开它。扩展名为pdf时,//浏览器将用acrobat打开。smart.setContentDisposition(null);//下载文件smart.downloadFile(request.getRealPath("/upload/"+session.getAttribute("saveFileName")+".txt"));//smart.downloadFile("/upload/test.txt");//下面两行代码解决java.lang.IllegalStateException: getOutputStream() has already been called for this responseout.clear();out=pageContext.pushBody();%></body></html>
在试SmartUpload的下载的时候报了这个错误:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
通过网上查找,找到了原因:
引用别人的说法:
由于jsp container在处理完成请求后会调用releasePageContet方法释放所用的PageContext object,并且同时调用getWriter方法,由于getWriter方法与在jsp页面中使用流相关的getOutputStream方法冲突,所以会造成这种异常,解决办法是:只需要在jsp页面的最后加上两条语句: out.clear();out=pageContext.pushBody();即可(其中out,pageContext均为jsp内置对象!)
0 0
- SmartUpload上传下载使用
- SmartUpload上传下载
- SmartUpload上传下载
- SmartUpload上传下载
- 使用SmartUpload实现上传下载(在jsp中用的)
- 使用smartupload组件实现jsp+jdbc上传下载文件
- 上传下载组件SmartUpload使用方法
- SmartUpload上传下载全攻略
- smartupload实现上传下载
- smartupload实现上传下载
- smartupload实现上传下载
- jsp-SmartUpload上传下载全攻略
- smartupload.jar 实现文件上传下载
- smartupload.jar 实现文件上传下载
- smartupload.jar 实现文件上传下载
- Java中用smartupload实现上传下载
- smartupload.jar 实现文件上传下载
- smartupload.jar 实现文件上传下载
- 5.Linux应用编程——信号量(POSIX—线程)
- IOS网络——检测网络状态:Reachability
- 算法排序之选择排序
- Microsoft.Jet.OLEDB.4.0数据库连接字符串中密码的写法!
- Bootstrap分页,标签和微章
- SmartUpload上传下载使用
- 6.Linux应用编程——管道、信号
- MySQL 查询语句返回某字段出现超过1次的所有记录
- 模拟退火算法 POJ 2420
- 7.Linux应用编程——共享内存
- composer及laravel安装及环境配置
- HDU 3333 线段树+离线处理
- innoDB源码分析--缓冲池
- ios测试覆盖率收集