1、單文件上傳
單文件上傳步驟:
1)創(chuàng)建上傳jsp頁面
文件上傳的表單提交方式必須是POST方式,編碼類型:enctype="multapplication/x-www-form-urlencoded,比如:
1 <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post"> 2)創(chuàng)建處理文件上傳Action類
3)配置struts.xml文件
1 <constant name="struts.multipart.maxSize" value="20000000"></constant>
設(shè)置上傳文件總大小,對(duì)所有上傳form有效,只想對(duì)當(dāng)前form進(jìn)行設(shè)置,可以設(shè)置fileUpload攔截器屬性
可以在struts.xml文件中配置這些屬性:
1 <interceptor-ref name="defaultStack">2 <!--配置上傳文件的大小,這里配置的是上傳文件的單個(gè)大小-->3 <param name="fileUpload.maximumSize">20971520</param> 4 <!-- 配置上傳文件允許的類型-->5 <param name="fileUpload.allowedTypes">text/plain,application/msWord</param>6 <!-- 配置上傳文件的擴(kuò)展名-->7 <param name="fileUpload.allowedExtensions">.txt,.doc</param>8 </interceptor-ref>
允許的類型(allowedTypes)和允許的擴(kuò)展名(allowedExtensions)必須保持一致。
單文件上傳示例:
1)創(chuàng)建jsp頁面
1 <body>2 <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post">3 上傳文件:<input type="file" name="upload">4 <input type="submit" value="上傳">5 </form>6 </body>2)創(chuàng)建Action類
1 public class UploadAction extends ActionSupport { 2 private File upload; 3 private String uploadContentType; 4 private String uploadFileName; 5 6 public File getUpload() { 7 return upload; 8 } 9 10 public void setUpload(File upload) {11 this.upload = upload;12 }13 14 public String getUploadContentType() {15 return uploadContentType;16 }17 18 public void setUploadContentType(String uploadContentType) {19 this.uploadContentType = uploadContentType;20 }21 22 public String getUploadFileName() {23 return uploadFileName;24 }25 26 public void setUploadFileName(String uploadFileName) {27 this.uploadFileName = uploadFileName;28 }29 30 @Override31 public String execute() throws Exception {32 ServletContext sc = ServletActionContext.getServletContext();33 //獲取要保存文件的位置34 String path = sc.getRealPath("/upload");35 //創(chuàng)建一個(gè)與上傳文件同名的文件36 File file = new File(path, uploadFileName);37 //將臨時(shí)文件內(nèi)容拷貝到目標(biāo)文件夾下的那個(gè)同名的文件38 FileUtils.copyFile(upload, file);39 //刪除臨時(shí)文件40 upload.delete();41 return SUCCESS;42 }43 }3)配置struts.xml文件
1 <struts> 2 <constant name="struts.devMode" value="true" /> 3 <constant name="struts.multipart.maxSize" value="200000000"/> 4 <package name="default" namespace="/" extends="struts-default"> 5 <action name="uploadAction" class="com.sunny.action.UploadAction"> 6 <result>/success.jsp</result> 7 <result name="input">/error.jsp</result> 8 <interceptor-ref name="defaultStack"> 9 <param name="fileUpload.maximumSize">20971520</param>10 <param name="fileUpload.allowedTypes">text/plain,application/msword</param>11 <param name="fileUpload.allowedExtensions">.txt,.doc</param>12 </interceptor-ref>13 </action>14 </package>15 </struts>
4)上傳文件界面

5)上傳成功后會(huì)跳轉(zhuǎn)到success.jsp頁面

6)項(xiàng)目下的upload文件夾下會(huì)有上傳的文件

上傳問題信息國際化
Struts2上傳問題信息默認(rèn)的文件為在struts-message.properties下:
1 struts.messages.error.uploading=Error uploading: {0}2 struts.messages.error.file.too.large=File too large: {0} "{1}" "{2}" {3}3 struts.messages.error.content.type.not.allowed=Content-Type not allowed: {0} "{1}" "{2}" {3}4 struts.messages.error.file.extension.not.allowed=File extension not allowed: {0} "{1}" "{2}" {3}要想實(shí)現(xiàn)中文顯示,需要在Action類相同文件下創(chuàng)建ActionClassName.properties文件,其中ActionClassName為上傳Action類的類名,文件內(nèi)容修改為:
1 struts.messages.error.uploading=上傳錯(cuò)誤: {0}2 struts.messages.error.file.too.large=上傳文件太大: {0} "{1}" "{2}" {3}3 struts.messages.error.content.type.not.allowed=上傳文件的類型不允許: {0} "{1}" "{2}" {3}4 struts.messages.error.file.extension.not.allowed=上傳文件的后綴名不允許: {0} "{1}" "{2}" {3}等號(hào)前面的內(nèi)容固定,后面的內(nèi)容可以自己寫。
2、多文件上傳
多文件上傳的所有流程與單文件上傳一致,但是需要注意的是:
單文件上傳示例:
1)創(chuàng)建jsp頁面
1 <body>2 <form action="${pageContext.servletContext.contextPath}/uploadAction.action" enctype="multipart/form-data" method="post">3 上傳文件:<input type="file" name="upload"><br>4 上傳文件:<input type="file" name="upload"><br>5 上傳文件:<input type="file" name="upload"><br>6 上傳文件:<input type="file" name="upload"><br>7 <input type="submit" value="上傳">8 </form>9 </body>2)創(chuàng)建Action類
1 public class UploadAction extends ActionSupport { 2 private File[] upload; 3 private String[] uploadContentType; 4 private String[] uploadFileName; 5 6 public File[] getUpload() { 7 return upload; 8 } 9 10 public void setUpload(File[] upload) {11 this.upload = upload;12 }13 14 public String[] getUploadContentType() {15 return uploadContentType;16 }17 18 public void setUploadContentType(String[] uploadContentType) {19 this.uploadContentType = uploadContentType;20 }21 22 public String[] getUploadFileName() {23 return uploadFileName;24 }25 26 public void setUploadFileName(String[] uploadFileName) {27 this.uploadFileName = uploadFileName;28 }29 30 @Override31 public String execute() throws Exception {32 ServletContext sc = ServletActionContext.getServletContext();33 //獲取要保存文件的位置34 String path = sc.getRealPath("/upload");35 //創(chuàng)建一個(gè)與上傳文件同名的文件36 for (int i = 0; i < upload.length; i++) {37 File file = new File(path, uploadFileName[i]);38 //將臨時(shí)文件內(nèi)容拷貝到目標(biāo)文件夾下的那個(gè)同名的文件39 FileUtils.copyFile(upload[i], file);40 //刪除臨時(shí)文件41 upload[i].delete();42 }43 return SUCCESS;44 }45 }3)配置struts.xml文件,和單文件上傳的配置一樣
1 <struts> 2 <constant name="struts.devMode" value="true" /> 3 <constant name="struts.multipart.maxSize" value="200000000"/> 4 <package name="default" namespace="/" extends="struts-default"> 5 <action name="uploadAction" class="com.sunny.action.UploadAction"> 6 <result>/success.jsp</result> 7 <result name="input">/error.jsp</result> 8 <interceptor-ref name="defaultStack"> 9 <param name="fileUpload.maximumSize">20971520</param>10 <param name="fileUpload.allowedTypes">text/plain,application/msword</param>11 <param name="fileUpload.allowedExtensions">.txt,.doc</param>12 </interceptor-ref>13 </action>14 </package>15 </struts>
4)上傳文件界面

5)上傳成功后會(huì)跳轉(zhuǎn)到success.jsp頁面

6)項(xiàng)目下的upload文件夾下會(huì)有上傳的文件

3、文件下載
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注