您的位置:首页 > 编程语言 > Java开发

Struts2 单文件上传

2015-10-12 15:43 495 查看
Struts2 提供了更为简便的文件上传机制,将文件上传的复杂操作都封装到commons-fileupload.jar 、commons-io.jar两个jar包中,然后再程序中使用简单的几句代码就能实现文件上传;

HTML:

<form action="${pageContext.request.contextPath}/hello/upload_uploadImage.do" enctype="multipart/form-data" method="post">
图片:<input type="file" name="image" />
<input type="submit" value="上传" />
</form>

Struts.xml:
<action name="upload_*" class="com.actions.UploadAction" method="{1}">
<result name="message">/WEB-INF/message.jsp</result>
</action>

action:
import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

public class UploadAction {

//只要File的名称与html中File控件的name相一致就可以获取到这个文件
private File image;
//只要使用file的name+FileName就可以获取到上传文件的名称
private String imageFileName;
//只要使用file的name+ContentType就可以获取到上传文件的类型
private String imageContentType;
private String message;

public String uploadImage() {
try {
String realPath = ServletActionContext.getServletContext().getRealPath("/images");
File filePath = new File(realPath);
if (!filePath.exists()) {
filePath.mkdirs();
}
System.out.println("文件存放路径:" + realPath);
if (image != null) {
System.out.println("文件名:" + imageFileName + ",文件类型:" + imageContentType);
File saveFile = new File(filePath, imageFileName);
//默认Struts2会将文件上传到Struts2临时空间中,当Action执行完成以后将文件删除;
//要实现文件传,只需要将文件从临时空间copy到存储空间即可
FileUtils.copyFile(image, saveFile);
message="文件上传成功!";
}
} catch (IOException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return "message";
}

public File getImage() {
return image;
}

public void setImage(File image) {
this.image = image;
}

public String getImageFileName() {
return imageFileName;
}

public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}

public String getImageContentType() {
return imageContentType;
}

public void setImageContentType(String imageContentType) {
this.imageContentType = imageContentType;
}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

}注:通过 <constant name="struts.multipart.maxSize" value="10701096"></constant>  可以设置上传文件的大小;
注:对于大文件上传,不推荐使用Web的方式进行上传,可以使用socket的方式;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: