struts文件上传
标签: JAVA框架
前提:
表单的method必须是post
表单的enctype="multipart/form-data"
提供input type=“file”类型的上传输入域
1 单文件的上传
2 多文件上传
3 上传中有问题
上传失败会转向 input的视图
错误显示 <s:actionerror/>
4 限制上传文件的大小
<!-- 限制上传文件的总大小 -->
<constant name="struts.multipart.maxSize" value="10485760"></constant>
5 限制文件的上传类型
<interceptor-ref name="defaultStack">
<param name="fileUpload.allowedExtensions">.jpg,.bmp,.png</param>
</interceptor-ref>
6 覆盖掉系统自带的消息提示
在src根目录下创建fileupload.properties文件 里面配置消息提示
在xml文件中 加入
<!-- 覆盖掉默认的消息 -->
<constant name="struts.custom.i18n.resources" value="fileupload"></constant>
package com.action;
import java.io.File;
import java.io.IOException;
import javax.servlet.ServletContext;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class DemoActionupload1 extends ActionSupport{
private String name;
private File photo;//必须是File类型,名称对应表单的上传域的名字
private String photoFileName;//上传文件的文件名 XXXFileName 固定写法
private String photoContentType;//上传文件的MIME类型 XXXContentType
public String upload(){
System.out.println("name:"+name);
System.out.println("photo:"+photo);
System.out.println("photoFileName:"+photoFileName);
System.out.println("photoContentType:"+photoContentType);
ServletContext sc=ServletActionContext.getServletContext();
String dir=sc.getRealPath("/wenjian");
System.out.println(dir);
File d=new File(dir);
if(!d.exists()){
d.mkdirs();
}
long current=System.currentTimeMillis();
File destFile=new File(d, current+photoFileName);
try {
FileUtils.copyFile(photo, destFile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public File getPhoto() {
return photo;
}
public void setPhoto(File photo) {
this.photo = photo;
}
public String getPhotoFileName() {
return photoFileName;
}
public void setPhotoFileName(String photoFileName) {
this.photoFileName = photoFileName;
}
public String getPhotoContentType() {
return photoContentType;
}
public void setPhotoContentType(String photoContentType) {
this.photoContentType = photoContentType;
}
}
upload.jsp
<s:actionerror/>
<s:form action="upload1" enctype="multipart/form-data" method="post">
<s:textfield name="name" label="名称"></s:textfield>
<s:file name="photo" label="靓照"></s:file>
<s:submit value="上传"></s:submit>
</s:form>