Struts文件上傳及下載_第1頁
Struts文件上傳及下載_第2頁
Struts文件上傳及下載_第3頁
Struts文件上傳及下載_第4頁
Struts文件上傳及下載_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Struts—第十一章Struts2文件上傳及下載1考試什么是代理?代理所涉及的角色?用代碼實(shí)現(xiàn)靜態(tài)代理?要實(shí)現(xiàn)功能演示FileUpload工程Login2.jsp上節(jié)回顧什么是攔截器Struts2采用什么方式實(shí)現(xiàn)的攔截器在struts2中怎么怎么攔截器所繼承的類所使用的標(biāo)記本節(jié)目標(biāo)文件上傳掌握文件上傳所使用的類掌握文件上傳的步驟掌握上傳多個文件的步驟文件下載掌握文件下載所使用的類掌握文件下載的步驟文件上傳

文件上傳的作用文件上傳的方式ServletStruts2的方式使用文件流的操作InputStreamFileInputStreamOutputStreamFileOutputStreamFile使用文件流進(jìn)行文件的讀寫fileTest.javaInputStreamis=new

FileInputStream(new

File("c:\\myfile.txt"));OutputStream

os=new

FileOutputStream(newFile("c:\\myfile1.txt"));byte[]buffer=new

byte[400];intlength=0;while((length=is.read(buffer))>0)os.write(buffer,0,length);文件上傳的應(yīng)用郵件附件上傳在網(wǎng)上辦公室提交文檔提交測試報告…….Struts2提供的提供了一個文件上傳攔截器erceptor.FileUploadInterceptor它負(fù)責(zé)調(diào)用底層的文件上傳組件解析文件內(nèi)容并為action準(zhǔn)備與上傳文件相關(guān)的屬性值。處理文件上傳請求的Action必須提供特殊樣式命名的屬性舉例表單的要求同上<inputtype=“file”name=“image”/>ActionAction的三個屬性

image

java.io.File

類型,已上傳文件的File對象StringimageFileName:上傳文件的文件名StringimageContentType:上傳文件的內(nèi)容類型Action業(yè)務(wù)處理使用參數(shù)來構(gòu)建一個輸入流構(gòu)建一個一個File對象(用系統(tǒng)路徑和當(dāng)前的file的名字)用上面的文件構(gòu)建一個輸出流將輸入流里的內(nèi)容寫入至輸出流中Action業(yè)務(wù)處理InputStreamis=new

FileInputStream(file);Stringpath=ServletActionContext.getServletContext().getRealPath("/");FilenewFile=new

File(path,this.getFileFileName());OutputStream

os=new

FileOutputStream(newFile);byte[]buffer=new

byte[400];intlength=0;while((length=is.read(buffer))>0){os.write(buffer,0,length);}return"success";成功頁面result.jspusername:${requestScope.username}<br>password:${requestScope.password}<br>file:${requestScope.fileFileName}案例Strut2工程的login2.jsp問題?文件名稱中文時怎么辦?解決辦法查看perties文件Struts.xml文件修改<constantname="struts.multipart.saveDir"value="c:\"></constant><constantname="struts.i18n.encoding"value="gbk"></constant>如果多文件怎么辦?上傳固定數(shù)量的文件實(shí)現(xiàn)多文件上傳privateStringusername;privateStringpassword;privateList<File>file;privateList<String>fileFileName;privateList<String>fileContentType;實(shí)現(xiàn)多文件上傳for(inti=0;i<file.size();i++){InputStreamis=new

FileInputStream(file.get(i));Stringroot=ServletActionContext.getRequest().getRealPath("/");FiledestFile=new

File(root,this.getFileFileName().get(i));OutputStream

os=new

FileOutputStream(destFile);Form表單的代碼<s:formaction="fileupload"method="post"enctype="multipart/form-data"><s:textareaname="username"label="username"></s:textarea><s:filename="file"></s:file><s:submitlabel="OK"></s:submit></s:form>動態(tài)添加上傳的文件修改login2.jsp文件增加一個按鈕增加按鈕的處理事件對于action及struts.xml文件則不需要修改按鈕的處理事件<script>functionaddMore(){vartd=document.getElementById("more");var

br=document.createElement("br");varinput=document.createElement("input");varbutton=document.createElement("button");input.type="file";="file";button.value="remove";button.onclick=function(){td.removeChild(br);td.removeChild(input);td.removeChild(button);}td.appendChild(br);td.appendChild(input);td.appendChild(button);}</script>增加一個按鈕<tdid="more"><s:filename="file"></s:file><inputtype="button"value="addMore"onClick="addMore()"></td>對上傳的文件進(jìn)行限制需要使用系統(tǒng)提供的攔截器<interceptor-refname="fileUpload">查看此攔截器所對應(yīng)的類此類有兩個參數(shù)

protectedLongmaximumSize;最大長度

protectedStringallowedTypes;允許的類型Struts.xml<interceptor-refname="fileUpload"><paramname=“maximumSize”>409600</param>(字節(jié))<paramname="allowedTypes">application/vnd.ms-powerpoint</param>

</interceptor-ref>紅色部分指的是允許使用的文件類型。該文件類型在tomcat的安裝目錄—conf-web.xml文件中查得

<mime-mapping><extension>ppt</extension><mime-type>application/vnd.ms-powerpoint</mime-type></mime-mapping>此時會出現(xiàn)空指針異常為什么?解決辦法增加:<interceptor-refname="defaultStack"></interceptor-ref>小結(jié)上傳不合法的用戶信息不顯示?在input.jsp頁面中增加<s:fielderror>Tomcat—conf—web.xml<mime-mapping><extension>xls</extension><mime-type>application/vnd.ms-excel</mime-type></mime-mapping>錯誤信息是系統(tǒng)的,如何解決?在工程的perties文件中增加struts.messages.error.content.type.not.allowed=fileisnot紅色部分如何找到?在struts-perties系統(tǒng)文件中找到。錯誤信息是中文的,如何解決?Native2ascii命令文件下載可以使用鏈接暴露了下載文件的真實(shí)地址,不利于對資源進(jìn)行安全保護(hù)。服務(wù)器端的文件只能保存在web應(yīng)用所在的目錄下利用程序編碼實(shí)現(xiàn)使用HTTP協(xié)議報文頭中的三個報文件頭域Content-Type:application/x-msdownloadContent-Disposition:attachment;filename=downloadfileContent-Length:filesize步驟編寫JSP頁面編寫action配置struts.xml編寫JSP頁面<ahref="/FileUpload/download.action">download</a>或<s:a

href="/FileUpload/download.action">download</s:a>編寫actionpublic

class

DownLoadAction

extends

ActionSupport

{

public

InputStream

getDownloadFile(){

return

ServletActionContext.getServletContext().getResourceAsStream("/struts.ppt");}

publicStringexecute()throwsException{

return"success";}}配置struts.xml<actionname="download"class="com.dn.action.DownLoadAction"><resultname="success"type="stream"><paramname="contentType">application/vnd.ms-powerpoint</param><paramname="contentDisposition">filename="struts.ppt"</param><paramname="inputName">downloadFile</param></result></action>說明contentType:下載文件的類型,在tomcat-conf-web.xml文件中查到contentDisposition:格式為filename=“struts.ppt”其中filename是固定的,而struts.ppt是在下載時,顯示在你另存框中的文件名字inputName:是你所對應(yīng)的文件輸入流的名字,它應(yīng)該同action中的返回值是InputStream的get***()函數(shù)名相同總結(jié):文件上傳Struts2文件上傳的步驟文件下載文件上傳所涉及的文件Jsp文件業(yè)務(wù)處理文件java文件文件上傳(struts2的表單)早期的HTML不支持文件上傳在HTMLRFC1867規(guī)范中使用<inputtype=“file”>來實(shí)現(xiàn)文件的上傳如果在表單中使用了該組件,瀏覽器會自動生成一個輸入框及一個按鈕對表單的要求在表單中要有<inputtype=“file”>表單必須要有method方法,并且method方法的值必須是post表單必須要有enctype="multipart/form-data“注:此三項(xiàng)缺一不可表單案例<formaction="result.jsp"mehtod="post"

enctype="multipart/form-data"><inputtype="text"name="info"/><inputtype="file"name="file"><inputtype="submit"vlaue="OK"></form>文件上傳上傳文件的內(nèi)容不能直接通過請求對象的getParameter()方法來得到。需要以字節(jié)流的形式讀取客戶端提交的文件數(shù)據(jù)。并按照文件上的格式對這些數(shù)據(jù)進(jìn)行解析,從而獲取上傳文件的內(nèi)容。Struts沒有提供解析上傳文件內(nèi)容的功能,它使用第三方的文件上傳組件提供的對文件上傳的支持。Struts2使用的是apache公司提供的jackata文件上傳還有兩種方式pell、cos方式Struts2的文件上傳可以使用apache組織的commons-fileupload組件。兩個libCommons-fileupload.jarCommons-io.jarUploadServlet.java使用servlet來實(shí)現(xiàn)使用文件流來實(shí)現(xiàn)使用commons.apache.FileUpload插件來進(jìn)行注意:此時文件的出現(xiàn)在哪?Tomcat/webapps/FileUpload而不是我們的工程里Serlvet的類的編寫Index.jsp文件上傳所涉及的類DiskFileItemFactory是磁盤

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論