標籤:method 檔案夾 app body maximums util eth 名稱 maximum
一,首先建立一個表單頁面
<body><form action="uploads" method="post" enctype="multipart/form-data">檔案: <input type="file" name="uploadObject"> <inputtype="submit" value="提交"></form></body>
二,建立一個接受檔案的Action處理上傳的檔案
public class FileUpload extends ActionSupport {private static final long serialVersionUID = 1L;/* 上傳的檔案,屬性的名字和form表單中的name保持一致 */public File uploadObject;/* 擷取上傳檔案的名字,名字的命名格式為 file 的檔案名稱(上面)+“fileName” */public String uploadObjectFileName;/* 檔案的類型名稱,名字的命名格式為 file的檔案名稱(上上面)+“ContentType” */public String uploadObjectContentType;public String execute() {System.out.println("fileName:" + uploadObjectFileName);System.out.println("contentType:" + uploadObjectContentType);System.out.println("File:" + uploadObject);// 擷取要儲存檔案夾的實體路徑(絕對路徑)String realPath = ServletActionContext.getServletContext().getRealPath("/upload");File file = new File(realPath);// 測試此抽象路徑名表示的檔案或目錄是否存在。若不存在,建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。if (!file.exists()) {file.mkdirs();}try {// 儲存檔案FileUtils.copyFile(uploadObject, new File(file,uploadObjectFileName));} catch (IOException e) {e.printStackTrace();}return SUCCESS;}}
三,配置action
<package name="upload" extends="struts-default"> <action name="uploads" class="gy.upload.FileUpload"> <!-- 指定(限制)上傳檔案的類型,定義局部攔截器,修改預設攔截器的屬性 "fileUpload.maximumSize" :限制上傳最大的檔案大小。 "fileUpload.allowedTypes":允許上傳檔案的類型。 "fileUpload.allowedExtensions":允許上傳檔案的可擴充檔案類型。 --> <interceptor-ref name="defaultStack"> <param name="fileUpload.maximumSize">500000000</param> <param name="fileUpload.allowedTypes">text/plain,application/vnd.ms-powerpoint</param> <param name="fileUpload.allowedExtensions">.txt,.ppt</param> </interceptor-ref> <result>/success.html</result> <!-- 出現錯誤自動會返回input結果,進入結果檢視 --> <result name="input" >/fail.html</result> </action> </package>
這樣就搞定了。注釋很重要
(25) java web的struts2架構的使用-基於表單的檔案上傳