Struts2 文件上传
来源:互联网 发布:linux 内核参数配置 编辑:程序博客网 时间:2024/05/20 17:39
文件上传
1. struts2的文件上传使用的是apache下的commons-fileupload来实现的。
2. JSP表单要求是post提交,并且enctype=”multipart/form-data”
3. 在action中,需要提供三个属性,一个File类型,名称是表单域名,其他两个分别是表单域名+FileName,表单域名+ContentType,并且提供set方法
UploadAction类
publicclass UploadActionextendsActionSupport{
//File参数应该与表单名一致
private Filefile;
//文件名,注意写法为 file+FileName
private StringfileFileName;
//文件类型,写法如上
private StringfileContentType;
public String upload()throws IOException{
InputStream is=new FileInputStream(file);
OutputStream os=new FileOutputStream("F:"+File.separator+"upload"+File.separator+fileFileName);
intlen=0;
byte[]buffer=newbyte[512];
while((len=is.read(buffer))!=-1){
os.write(buffer, 0,len);
}
os.close();
is.close();
return"success";
}
publicvoid setFile(Filefile) {
this.file =file;
}
publicvoid setFileFileName(StringfileFileName) {
this.fileFileName =fileFileName;
}
publicvoid setFileContentType(StringfileContentType) {
this.fileContentType =fileContentType;
}
}
注意:必须继承ActionSupport类,否则无法实现文件类型的拦截功能
struts.xml,控制文件上传大小需要配置拦截器的maxmumSize属性和sturts2的静态属性:struts.multipart.maxSize,且静态属性值要大于等于maxmumSize,另外控制文件上传类型需要配置allowedTypes属性,并要配置input的逻辑视图,当文件类型不合法会返回INPUT
<actionname="upload"class="com.zys.action.UploadAction"method="upload">
<!-- 如果要设置上传文件大小,就要引用fileUpload拦截器,并引用defaultStack -->
<interceptor-refname="fileUpload">
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpeg</param>
<paramname="maximumSize">20971520</param>
</interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>
<resultname="success">/success.jsp</result>
<resultname="input">/upload.jsp</result>
</action>
JSP页面
<formaction="upload.action"method="post"enctype="multipart/form-data">
文件:<inputtype="file"name="file"/>
<inputtype="submit"value="提交"/>
</form>
4. 批量文件上传
JSP页面
<formaction="batch.action"method="post"enctype="multipart/form-data">
<inputtype="file"name="file"/>
<inputtype="file"name="file"/>
<inputtype="file"name="file"/>
<inputtype="file"name="file"/>
<inputtype="submit"value="提交">
</form>
struts.xml
<actionname="batch"class="com.zys.action.BatchUploadAction">
<!--如果要设置上传文件大小,就要引用fileUpload拦截器,并引用defaultStack -->
<interceptor-refname="fileUpload">
<paramname="allowedTypes">image/bmp,image/x-png,image/gif,image/jpeg</param>
<paramname="maximumSize">20971520</param>
</interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>
<resultname="success">/success.jsp</result>
<resultname="input">/batch.jsp</result>
</action>
BatchUploadAction类
publicclass BatchUploadActionextends ActionSupport{
private File[]file;
private String[]fileFileName;
private String[]fileContentType;
public String execute()throws IOException{
for(inti=0;i<file.length;i++){
InputStream is=new FileInputStream(file[i]);
OutputStream os=new FileOutputStream("F:"+File.separator+"upload"+File.separator+fileFileName[i]);
byte[]buffer=newbyte[1024];
intlen=0;
while((len=is.read(buffer))!=-1){
os.write(buffer, 0,len);
}
is.close();
os.close();
}
return"success";
}
publicvoid setFile(File[]file) {
this.file =file;
}
publicvoid setFileFileName(String[]fileFileName) {
this.fileFileName =fileFileName;
}
publicvoid setFileContentType(String[]fileContentType) {
this.fileContentType =fileContentType;
}
}
- struts2上传文件(三) struts2上传文件
- [Struts2]Struts2的文件上传
- Struts2的文件上传
- Struts2文件上传
- Struts2 上传文件实例
- struts2文件上传
- struts2文件上传
- Struts2的文件上传
- struts2-上传文件(1)
- struts2-上传文件(2)
- Struts2上传文件示例
- struts2文件上传
- Struts2实现文件上传
- struts2文件上传
- Struts2 文件上传
- ext + struts2 上传文件
- Struts2 文件上传
- Struts2的文件上传
- CodeForces
- JanusGraph
- 复习-数据结构之线性表
- GitChat · 前端 | Webpack 工程的 PWA 实战
- C# 三层架构之系统的登录验证与添加数据的实现
- Struts2 文件上传
- redis-cluster配置攻略 本人亲自尝试
- 去除PDF的水印【9种方法总结】
- up
- 复习知识
- 基于vue-cli的vue项目之axios的使用3--get传参请求
- 剑指offer-21:包含min函数的栈
- xxxxx has been explicitly marked deprecated here
- TreeView 父节点子节点勾选变化关联