文件上传
文件上传的两个jar
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Upload.jsp
<%--文件上传--%>
<form action="user/upload" method="post" enctype="multipart/form-data">
<input type="file" name="upload"/><br>
<button type="submit">上传</button>
</form>
Struts.xml
<!--文件上传-->
<action name="upload" class="cn.xcq.entity.Action1" method="upload">
<result>/success.jsp</result>
</action>
public class Action1 {
private File upload;
private String uploadFileName;
private String uploadContentType;
/*文件上传*/
public String upload(){
//文件上传路径
String path="g:/FileUploader";
String realPath=path+File.separatorChar+uploadFileName;
try {
FileUtils.copyFile(upload,new File(realPath));
} catch (IOException e) {
e.printStackTrace();
}
return "success";
}
public File getUpload() {
return upload;
}
public void setUpload(File upload) {
this.upload = upload;
}
public String getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
this.uploadContentType = uploadContentType;
}
}
在Action中使用了三个属性封装文件信息
File类型的XXX属性,与表单的File控件的name属性一样,用于封装File控件对应的文件内容
String类型的xxxFileName属性,该属性名称由前面的File类型属性和FileName组合,是固定的语法,是封装File控件对应文件的文件名
String类型的XXXContentType属性,同样由xxx属性和ContentType组合而成,是固定语法,封装File控件对应文件的文件类型
文件下载
Index.jsp
<form action="user/download" method="post">
<input type="text" name="inputPath">
<button type="submit">下载</button>
</form>
Struts.xml
<!--文件下载-->
<action name="download" class="cn.xcq.entity.DownLoad" method="download">
<result name="success" type="stream">
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
DownLoad
public class DownLoad {
//读取下载文件的目录
private String inputPath;
//下载文件的文件名
private String fileName;
//读取下载文件的输入流
private InputStream inputStream;
//下载文件的类型
private String conetntType;
public String download(){
try {
inputStream=new FileInputStream(inputPath);
//获取文件明
fileName= inputPath.substring(inputPath.lastIndexOf("\")+1);
//解决中文乱码问题
try {
fileName= URLEncoder.encode(fileName,"UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
public String getInputPath() {
return inputPath;
}
public void setInputPath(String inputPath) {
this.inputPath = inputPath;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
public String getConetntType() {
return conetntType;
}
public void setConetntType(String conetntType) {
this.conetntType = conetntType;
}
}
Name属性值要一致