struts文件上传和下载
来源:互联网 发布:在知乎工作 编辑:程序博客网 时间:2024/05/19 05:38
文件上传
回顾文件上传:struts提交的文件上传组件来上传文件:
前台:
1.提交方式POST
2.表单类型 multipart/form-data
3.input type=file
后台:
Apche提供的FileUpload组件
核心类:
FileItemFactoryFileItem的工厂
ServletFileUpload Servlet中文件上传的核心类
FileItem 封装了上传的表单文件项的信息
Struts的文件上传:
文件上传拦截器帮助我们完成了文件上传的功能:
<interceptor
name = "fileUpload"
class="org.apche,struts2.interceptor.FuleUploadceptor"/>
文件上传细节:
文件大小限制
Strust默认支持的文件上传最大是2M
. 通过常量修改:
<!-- 注意: action 的名称不能用关键字"fileUpload" -->
<action name="fileUploadAction" class="cn.itcast.e_fileupload.FileUpload"> <!-- 限制运行上传的文件的类型 --> <interceptor-ref name="defaultStack"> <!-- 限制运行的文件的扩展名 --> <param name="fileUpload.allowedExtensions">txt,jpg,jar</param> <!-- 限制运行的类型 【与上面同时使用,取交集】 <param name="fileUpload.allowedTypes">text/plain</param> --> </interceptor-ref> <result name="success">/e/success.jsp</result> <!-- 配置错误视图 --> <result name="input">/e/error.jsp</result></action>
<!-- 一、全局配置 --><!-- 0. 请求数据编码 --><constant name="struts.i18n.encoding" value="UTF-8"/><!-- 1. 修改Struts默认的访问后缀 --><constant name="struts.action.extension" value="action,do,"></constant><!-- 2. 修改xml自动重新加载 --><constant name="struts.configuration.xml.reload" value="true"/><!-- 3. 开启动态方法调用 (默认不开启)--><constant name="struts.enable.DynamicMethodInvocation" value="true"/><!-- 4. 修改上传文件的最大大小为30M --><constant name="struts.multipart.maxSize" value="31457280"/>
限制上传文件的运行类型
需求:只运行txt/jpg后缀的文件
错误提示
当文件上传出现错误时后,struts内部会返回input视图(错误视图)。所以就需要我们再struts.xml中配置input视图对应的错误页面!
Struts的文件下载
文件下载两种方式:
方式1:通过response对象向浏览器写入字节流数据;设置下载响应头
方式2:struts方式
<action name="down_*" class="cn.itcast.e_fileupload.DownAction" method="{1}"> <!-- 列表展示 --> <result name="list">/e/list.jsp</result> <!-- 下载操作 --> <result name="download" type="stream"> <!-- 运行下载的文件的类型:指定为所有的二进制文件类型 --> <param name="contentType">application/octet-stream</param> <!-- 对应的是Action中属性: 返回流的属性【其实就是getAttrInputStream()】 --> <param name="inputName">attrInputStream</param> <!-- 下载头,包括:浏览器显示的文件名 --> <param name="contentDisposition">attachment;filename=${downFileName}</param> <!-- 缓冲区大小设置 --> <param name="bufferSize">1024</param> </result></action>
<interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>
/** * Created by 朱博文 on 2017/6/21. *//*************1. 文件上传*********************/
public class FileUpLoad extends ActionSupport{ //对接表单<input type="file" name="file1"> private File file1; //文件名 private String file1Filename; //文件类型 private String file1ContentType; public void setFile1(File file1) { this.file1 = file1; } public void setFile1Filename(String file1Filename) { this.file1Filename = file1Filename; } public void setFile1ContentType(String file1ContentType) { this.file1ContentType = file1ContentType; } @Override public String execute() throws Exception { /** * 拿到文件看是否上上传成 */ //把文件上传到upload目录 //获取上传目录路径 String path = ServletActionContext.getServletContext().getRealPath("/upload");// 创建目标文件对象 File destFile = new File(path,file1Filename); //把上传的文件拷贝到目标文件中 FileUtils.copyFile(file1,destFile); System.out.println("FileUplaod.execute()"); return SUCCESS; }}
/*************2. 文件下载*********************/ // 1. 获取要下载的文件的文件名 private String fileName; public void setFileName(String fileName) { // 处理传入的参数中问题(get提交) try { fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } // 把处理好的文件名,赋值 this.fileName = fileName; } //2. 下载提交的业务方法 (在struts.xml中配置返回stream) public String down() throws Exception { return "download"; } // 3. 返回文件流的方法 public InputStream getAttrInputStream(){ return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + fileName); } // 4. 下载显示的文件名(浏览器显示的文件名) public String getDownFileName() { // 需要进行中文编码 try { fileName = URLEncoder.encode(fileName, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return fileName; }}
阅读全文
0 0
- struts文件上传和下载
- Struts 2控制文件上传和下载
- Java Struts文件上传和下载详解
- Java Struts文件上传和下载详解
- struts实现文件上传和下载
- struts文件上传和下载的
- Struts的文件上传和下载
- Struts Series(5) - 文件上传和下载
- 【Struts】文件的上传和下载
- struts 文件上传 下载
- Struts下载和上传
- struts上传和下载
- Struts文件上传与下载
- struts文件上传与下载
- BL_15 在线文件上传和下载 Struts 2.X + FileUpload
- 用struts实现文件的上传和下载
- Struts的上传和下载
- struts 文件上传及文件下载
- MAVEN使用快照不能获取最新jar的问题
- Linux 7z 指令
- Qt标准对话框之QMessageBox
- POI处理excel大数据
- C# 实现无标题栏窗口拖动效果
- struts文件上传和下载
- Java 错误解决之java.lang.IllegalArgumentException: Comparison method violates its general contract
- java修改项目web访问根目录
- Swig:C/C++代码转Python
- AngularJs中拟态框影响返回按钮返回问题
- Servlet 单例吗?action单例吗?
- poi实现Excel模板的报表导出
- Oracle11g中---SqlPlus可以正常登陆,sqlDeveloper无法登录
- 锁的种类与特点