strust框架實現文件上傳

例子:上傳一張廬山的照片

表單:

<form action=" upload.do"method="post" enctype="multipart/form-data"> //上傳編碼方式
標題: <input type="text" name="title"><br>
文件: <input type="file" name="myfile"><br>
<input type="submit" value="提交" >
</form>

流程:
用戶通過表單發請求上傳文件,Tomcat創建request封裝請求
key = title; vaule = “lushan”
key = myfile; vaule = byte[]類型字節數組對象(在http協議體)
upload .do請求給struts
struts截取路徑/upload, 找到該請求對應的配置信息

<action path="/upload"
type=" com. bjsxt . struts .UploadTestAction"
name= "uploadForm"
scope= "request"
<forward name=" success"path="/upload_ success jsp"/>
</action>
<form- bean name="uploadForm" type=" com. bjsxt . struts .UploadActionForm"/>

創建表單bean對象並自動收集表單數據
收集數據中,一旦有enctype= “multipart/ form-data”, Tomcat先創建出一 個實現FormFile接口(commons -fileupload 架包中)對
象,然後從request中通過參數名爲myfile找到封裝文件的byte[]類型字節數組對象,將封裝文件的字節流封裝到實現FormFile接口的對象。

收集數據:到bean中拿到跟參數名相同的屬性,調用UploadActionForm 的setTitle(String title) \ setMyfile(FormFile myfile)方法將value的值設到bean下。
◆第一個bean:參數名title,參數值爲"lushan"
◆第二個bean: 參數名myfile, 參數值爲封裝文件字節流實現FormFile接口的對象

存放文件的表單bean存在request中, (請求結束就銷燬, 所以要將文件拿出來,放在服務器上)
調用 processActionCreate(request, response, mapping), 創建action對象
調用processActionPerform( request, response, action, form, mapping) ,執行對象的execute()方法,

執行uploadTestAction
1、造型獲得ActionForm

UploadActionForm uaf=(UploadActionForm)form;

2、取得實現了FormFile接C ]類且封裝了文件字節流的對象

FormFile myFile=uaf . getMyfile();			 //實現formfile接[封裝文件的對象

3、拿到上傳的文件名,通過文件名,創建文字字節輸出流

Fileoutputstream fos=new Fileoutputstream("c:\\" myFile.getFileName);			//創建文件字節輸出流

4、將字節數組對象的數據寫到文件對象輸出流所指的文件上

fos .write(myFile. getFileData());			//取得文件字節流對象

5、強行清空緩存,關閉流

fos . flush();
fos . close();

返回ActionForward 對象,struts 解析後在jsp 頁面顯示什麼文件上傳成功:

return mapping. f indForward("success"); .

upload_success.jsp 中

${ uploadForm. myfile .fileName}

◆通過屬性名uploadForm, 找到了封裝了上傳文件的表單Bean ActionForm
◆通過.myfile, 找到了表單Bean中的myfile屬性,該屬性中是實現了FormFile接口類的對象的地址
◆通過調用getFileName()方法,得到上傳文件的文件名

限定上傳文件大小
默認250M

<controller maxFileSize="10M"/>//限定最大上傳數據大小
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章