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

【Struts2】文件上传

2015-12-17 18:36 429 查看
客户端:form表单的填写:

<span style="white-space:pre">				</span><form enctype="multipart/form-data" action="FileUpdate.action" method="post">
<span style="white-space:pre">	</span>文件:<input type="file" name="files"><br/>
<span style="white-space:pre">	</span><input type="submit" value="提交">
</form>
其中文件的enctype属性很重,许多人会遗忘。

服务器端:

public class FileUpdate {

private File files;
private String filesFileName;	//files为客户端的name属性值,FileName为固定值,这里可以直接获取到文件的名称
private String filesContentType;//ContentType为固定值,可以获取上传文件的类型

public String getFilesContentType() {
return filesContentType;
}
public void setFilesContentType(String filesContentType) {
this.filesContentType = filesContentType;
}
public File getFiles() {
return files;
}
public void setFiles(File files) {
this.files = files;
}
public String getFilesFileName() {
return filesFileName;
}
public void setFilesFileName(String filesFileName) {
this.filesFileName = filesFileName;
}

public String execute() throws Exception{
//获取保存路径
String relpath = ServletActionContext.getServletContext().getRealPath("/files");
System.out.println(relpath);
//新建目标文件
File saveFile = new File(new File(relpath),filesFileName);
if(!saveFile.getParentFile().exists()) saveFile.getParentFile().mkdir();
//将获取到的文件复制到目标文件
FileUtils.copyFile(files, saveFile);
System.out.println(filesContentType);
ActionContext.getContext().getApplication().put("msg", "上传成功!");
return "success";
}
}

其中容易混淆的是files,filesFileName,filesContentType,这三个属性参数的设定。这里的files是与客户端的name属性相对应的,且必须相等。

而filesFileName和filesContentType的后缀FileName,ContentType则是固定值,用于struts2自身去获取对应文件的文件名和文件类型。

struts2设定了默认最大上传文件的大小,大致是2M左右,有需要上传大文件的需求时,更改默认值:

<constant name="struts.multipart.maxSize" value="......"/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: