亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Struts2實現文件上傳功能

2024-07-13 10:17:21
字體:
來源:轉載
供稿:網友

Servlet 3.0規范的HttpServletRequest已經提供了方法來處理文件上傳但這種上傳需要在Servlet中完成。而Struts2則提供了更簡單的封裝。

Struts2默認使用的是Jakarta的Common-FileUpload的文件上傳框架,因此使用Struts2的文件上傳功能,則需要添加兩個jar包,即commons-io-2.2.jar和commons-fileupload-1.3.1.jar。 

Struts2簡單文件上傳示例:

1.文件上傳頁面

  為了能上傳文件,表單的method必須設置為POST,并且enctype設置為multipart/form-data。一旦設置了enctype為multipart/form-data,此時瀏覽器將會采用二進制流的方式來處理表單數據。

<%@ taglib prefix="s" uri="/struts-tags" %><%-- Created by IntelliJ IDEA. User: Administrator Date: 2018/1/16 Time: 14:06 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Struts2 簡單文件上傳</title></head><body> <s:form action="file_upload" method="POST" enctype="multipart/form-data"> <s:file name="upload" label="選擇文件"/> <s:submit value="上傳"/> </s:form></body></html>

2.處理上傳請求的Action

/** * Description:Struts2簡單文件上傳 * Author: Eleven * Date: 2018/1/24 10:39 */public class FileAction extends ActionSupport{ //上傳文件 private File upload; //上傳文件類型 private String uploadContentType; //上傳文件名 private String uploadFileName; //文件上傳允許的類型在struts.xml中使用param標簽動態設置了 private String allowTypes; public String page(){ return "page"; } public void upload() { //文件上傳: //1.讀取文件內容 //2.將文件內容寫到指定文件 try{  System.out.println("文件上傳允許的類型="+allowTypes);  String realPath = ServletActionContext.getServletContext().getRealPath("/upload");  System.out.println("項目的絕對路徑="+realPath);  //創建文件保存目錄  new File(realPath).mkdir();  File file = new File(realPath+"/"+uploadFileName);  //文件不存在則創建  if(!file.exists()){  file.createNewFile();  }  FileOutputStream out = new FileOutputStream(file);  FileInputStream in = new FileInputStream(upload);  byte[] buffer = new byte[1024];  int len = 0;  //邊讀邊寫 每次讀取1kb 寫1kb  while((len = in.read(buffer))>0){  out.write(buffer,0,len);  }  System.out.println("文件上傳成功..."); }catch(Exception e){  e.printStackTrace(); } } public File getUpload() { return upload; } public void setUpload(File upload) { this.upload = upload; } public String getUploadContentType() { return uploadContentType; } public void setUploadContentType(String uploadContentType) { this.uploadContentType = uploadContentType; } public String getUploadFileName() { return uploadFileName; } public void setUploadFileName(String uploadFileName) { this.uploadFileName = uploadFileName; } public String getAllowTypes() { return allowTypes; } public void setAllowTypes(String allowTypes) { this.allowTypes = allowTypes; }}

如果表單中包含一個name屬性為xxx的文件域,則對應的Action中需要使用三個成員變量來封裝該文件域的信息。

  類型為File的xxx成員變量封裝了該文件域對應的文件內容。

  類型為String的xxxFileName成員變量封裝了該文件域對應的文件的文件名。

  類型為String的xxxContentType成員變量封裝了該文件域對應的文件的文件類型。

3.配置struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!--文件上傳--> <action name="file_*" class="eleven.action.FileAction" method="{1}">  <result name="page">/WEB-INF/jsp/fileUpload.jsp</result>  <!--動態設置action的屬性,這里舉例設置了允許文件上傳的類型,但是action程序中并未做過多的處理-->  <param name="allowTypes">image/png,image/gif,image/jpeg</param> </action> </package></struts>

攔截器實現文件過濾  

  Struts2提供了一個文件上傳的攔截器,fileUpload,為了讓該攔截器起作用,要在action中配置攔截器引用。

  配置fileUpload攔截器時,可以為其指定兩個參數:

    allowTypes:允許上傳的文件類型,多個文件類型之間用英文逗號,隔開

    maximumSize:允許上傳的文件大小,單位是字節。

  當文件過濾失敗后,系統自動轉入input邏輯視圖,因此必須為該Action配置名為input的邏輯視圖。除此之外,還必須顯示地為該Action配置defaultStack的攔截器引用。

struts.xml配置文件如下:

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <!--文件上傳--> <action name="file_*" class="eleven.action.FileAction" method="{1}">  <!--配置fileUpload攔截器 且配置在defaultStack攔截器棧之前-->  <interceptor-ref name="fileUpload">  <!--允許上傳的文件類型-->  <param name="allowedTypes">image/png,image/gif,image/jpeg</param>  <!--允許上傳文件大小-->  <param name="maximumSize">2000</param>  </interceptor-ref>  <!--配置系統默認攔截器-->  <interceptor-ref name="defaultStack"/>  <!--配置input視圖頁面-->  <result name="input">/WEB-INF/jsp/input.jsp</result>  <result name="page">/WEB-INF/jsp/fileUpload.jsp</result> </action> </package></struts>

  上面配置的文件上傳的攔截器,要求文件上傳的類型只能是圖片文件,并且文件大小不能大于2000字節,如果上傳文件太大,或者類型不符合,則將跳轉到input邏輯視圖。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品福利网站| 社区色欧美激情 | 韩剧1988免费观看全集| 在线播放亚洲激情| 岛国av一区二区三区| 中文字幕日本欧美| 欧美精品福利在线| xvideos国产精品| www.日韩欧美| 国产日本欧美一区二区三区在线| 欧美亚洲国产日韩2020| 欧美日韩午夜剧场| 日韩电影视频免费| 爱福利视频一区| 成人黄色在线播放| 国产视频精品一区二区三区| 久久精视频免费在线久久完整在线看| 精品福利视频导航| 欧美激情精品久久久久久大尺度| 亚洲精品一区av在线播放| 久久精品国产亚洲精品| 狠狠躁夜夜躁人人爽超碰91| 亚洲无av在线中文字幕| 久久久精品中文字幕| 亚洲国产成人精品久久久国产成人一区| 久久久噜噜噜久久久| 永久免费精品影视网站| 午夜精品一区二区三区在线视| 精品成人乱色一区二区| 狠狠躁夜夜躁人人爽天天天天97| 国产精品吊钟奶在线| 成人网址在线观看| 欧美精品aaa| 久久精品人人爽| www.久久色.com| 亚洲日韩欧美视频| 亚洲国产精品久久久久久| 色黄久久久久久| 国产盗摄xxxx视频xxx69| 午夜精品久久久久久久白皮肤| 国产精品美女999| 日韩免费观看av| 在线亚洲午夜片av大片| 国产一区二区日韩| 国产成人91久久精品| 国产视频亚洲精品| 日韩电影免费观看在线观看| 最近2019中文字幕在线高清| 亚洲精品自拍视频| 欧美最猛性xxxxx免费| 91色精品视频在线| 亚洲成人精品久久| 日韩成人黄色av| 亚洲人成网站免费播放| 国产视频丨精品|在线观看| 亚洲成人激情视频| 国产精品久久久久久中文字| 亚洲字幕在线观看| 91在线视频导航| 美日韩丰满少妇在线观看| 欧美另类99xxxxx| 欧美成人精品不卡视频在线观看| 国产精品91久久久久久| 成人做爽爽免费视频| 91社影院在线观看| 精品久久久久久国产| 最近2019中文字幕mv免费看| 久久99青青精品免费观看| 日本精品久久中文字幕佐佐木| 国产噜噜噜噜久久久久久久久| 国产日韩欧美中文| 国产精品video| 色阁综合伊人av| 国外色69视频在线观看| 91青草视频久久| 久久久精品一区二区三区| 久久人人爽人人爽爽久久| 久久精品国产亚洲一区二区| 久久亚洲影音av资源网| 日本中文字幕不卡免费| 亚洲国产高清自拍| 91av免费观看91av精品在线| 亚洲人成电影网站色| 欧美激情小视频| 欧洲午夜精品久久久| 亚洲精品国产欧美| 亚洲欧美精品一区二区| 国产在线拍偷自揄拍精品| 国产精品亚洲视频在线观看| 国产成人亚洲综合91精品| 国产精品色视频| 国产精品久久久久久av福利软件| 国产精品揄拍500视频| 中文字幕精品av| 亚洲人线精品午夜| 中文字幕欧美日韩精品| 国产成人亚洲综合青青| 国产亚洲精品激情久久| 91精品久久久久久久久久入口| 日韩激情在线视频| 欧美性xxxx18| 欧美日韩国产丝袜美女| 亚洲欧美一区二区三区情侣bbw| 国产婷婷色综合av蜜臀av| 国产精品女主播视频| 国产精品视频区| 国产日韩在线视频| 欧美精品在线免费| 国产精品稀缺呦系列在线| 亚洲欧洲xxxx| 美女久久久久久久久久久| 欧美极品在线播放| 日韩欧美精品中文字幕| 68精品国产免费久久久久久婷婷| 91禁外国网站| 亚洲嫩模很污视频| 国产日本欧美一区二区三区| 国产成人精品在线视频| 在线日韩日本国产亚洲| 欧美日本精品在线| 亚洲一区二区久久久久久| 欧美激情三级免费| 成人av.网址在线网站| 日韩激情av在线播放| 午夜精品久久久久久99热| 欧美在线一级va免费观看| 欧美一区亚洲一区| 国产精品久久久久久久久久三级| 日韩欧美中文免费| 久久九九全国免费精品观看| 91精品国产乱码久久久久久久久| 日韩精品在线观看一区| 黄色精品在线看| 精品自在线视频| 日韩精品中文字幕有码专区| 亚洲 日韩 国产第一| 91热精品视频| 亚洲国产中文字幕在线观看| 欧美久久精品午夜青青大伊人| 国产美女久久精品| 久久精品国产精品亚洲| 日韩中文字幕在线| 91网站免费看| 高清亚洲成在人网站天堂| 成人精品一区二区三区电影免费| 国产www精品| 欧美在线视频一二三| 日韩av日韩在线观看| 国产成人在线一区| 自拍偷拍免费精品| 国产精品午夜国产小视频| 疯狂欧美牲乱大交777| 韩国视频理论视频久久| 亚洲天堂免费观看| 欧美性在线视频| 国产高清视频一区三区| 亚洲在线免费观看| 欧美老女人性视频| 精品久久久久久中文字幕| 亚洲mm色国产网站| 精品国产拍在线观看| 久久婷婷国产麻豆91天堂| 在线视频精品一| 久久99国产精品自在自在app|