文件上傳:
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。這兩個文件可以從http://commons.apache.org/下載。
第二步:把form表的enctype設置爲:“multipart/form-data“,如下:
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">
<input type="file" name="uploadFile">
</form>
第三步:在Action類中添加以下屬性,屬性紅色部分對應於表單中文件字段的名稱:
public class HelloWorldAction{
private File uploadFile;//得到上傳的文件
private String uploadFileContentType;//得到文件的類型
private String uploadFileFileName;//得到文件的名稱
//這裏略省了屬性的getter/setter方法
public String upload() throws Exception{
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
File file = new File(realpath);
if(!file.exists()) file.mkdirs();
FileUtils.copyFile(uploadFile, new File(file, uploadFileFileName));
return "success";
}
}
多文件上傳:
第一步:在WEB-INF/lib下加入commons-fileupload-1.2.1.jar、commons-io-1.3.2.jar。這兩個文件可以從http://commons.apache.org/下載。
第二步:把form表的enctype設置爲:“multipart/form-data“,如下:
<form enctype="multipart/form-data" action="${pageContext.request.contextPath}/xxx.action" method="post">
<input type="file" name="uploadFile">
</form>
第三步:在Action類中添加以下屬性,屬性紅色部分對應於表單中文件字段的名稱:
public class HelloWorldAction{
private File[] uploadFiles;//得到上傳的文件
private String[] uploadFilesContentType;//得到文件的類型
private String[] uploadFilesFileName;//得到文件的名稱
//這裏略省了屬性的getter/setter方法
public String upload() throws Exception{
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
File file = new File(realpath);
if(!file.exists()) file.mkdirs();
for(int i=0;i< uploadFiles.length;i++){
FileUtils.copyFile(uploadFiles[i], new File(file, uploadFilesFileName[i]));
}
return "success";
}
}
利用Stream結果視圖實現文件下載:
實現步驟:
1.編寫Action中的getInputStream()方法,將目標文件轉化成輸入流
public class DownloadAction extends ActionSupport{
private String fileName;
public InputStream getInputStream(){
InputStream inputStream=null;
try {
inputStream = new FileInputStream(new File(fileName));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return inputStream;
}
//fileName的getter和setter方法
public String execute() throws Exception {
return this.SUCCESS;
}
}
文件下載(配置struts.xml):
配置Struts.xml文件
<action name="download" class="com.xasxt.struts.action.DownloadAction">
<result type="stream">
<param name="contentType">application/actet-stream</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment; filename="test.txt"</param>
<param name="bufferSize">4096</param>
</result>
</action>
對於Stream result來說,有以下四個參數
contentType:指定下載文件類型,其中application/octet-stream表示無限制
inputName:流對象名,例如inputstream,框架會自動去尋找action中的getInputStream方法.
contentDisposition:經過轉碼的文件名,默認格式爲attachment;filename=“${fileName}”,調用該Action中的getFileName方法.
bufferSize:下載文件緩存大小