国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|

服務器之家 - 編程語言 - JAVA教程 - Struts2 控制文件上傳下載功能實例代碼

Struts2 控制文件上傳下載功能實例代碼

2020-10-26 16:44Walker_YAM JAVA教程

這篇文章主要介紹了Struts2 控制文件上傳下載功能實例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下

之前介紹servlet3.0新特性的時候有提到過servlet api提供了一個part類來實現對文件的上傳和保存,struts其實是在其基礎上做了進一步的封裝,更加簡單易用。至于文件下載,struts貫徹aop 思想,在下載之前提供對用戶權限控制的api。

下面我們將詳細介紹上傳和下載的相關內容。

一、struts文件上傳機制

     想要實現文件上傳功能,頁面的表單的method屬性必須被指定為post,還有enctype屬性必須為multipart/form-data,該值表示上傳的內容將會以二進制的形式被上傳到服務器,至于該屬性的其他值的作用及他們之間的區別,請查看之前文章:servlet3.0新特性。下面給出表現層頁面代碼:

?
1
2
3
4
5
6
<body>
 <s:form method="post" enctype="multipart/form-data" action="/upload">
  <s:file name="ufile" label="瀏覽"/>
  <s:submit value="上傳"/>
 </s:form>
</body>

實際上在struts的文件上傳中,它使用三個action屬性來描述被上傳的文件。commons-fileupload-1.3.2.jar和commons-io-2.2.jar這兩個包就是用于輔助表單上傳的內容賦值到action屬性中,所以在使用struts的文件上傳之前應當先包含著兩個包到項目中。下面給出upload對應的action:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class uploadfile extends actionsupport {
  //封裝的上傳文件的文件內容
  private file ufile;
  //封裝的上傳文件的文件名
  private string ufilefilename;
  //封裝的上傳文件的文件類型
  private string ufilecontenttype;
  ....省去getter,setter方法
 
  public string execute() throws ioexception {
    fileinputstream fin = new fileinputstream(ufile);
    fileoutputstream fos = new fileoutputstream("f:\\360\\"+ufilefilename);
    byte[] buffer = new byte[1024];
    int len;
    while((len = fin.read(buffer))>0){
      fos.write(buffer,0,len);
    }
    return success;
  }
}

先不看execute方法,在該action中,我們可以看到有三個屬性。ufile封裝了上傳的文件的二進制內容,ufilefilename(xxxfilename)封裝了該文件的文件名,ufilecontenttype(xxxcontenttype)封裝了該文件的類型。他們的值是我們不必關心的,框架會根據表單上傳的文件對他們進行賦值,只需要遵守他的命名規則即可。

execute方法主要是完成將上傳的文件保存到硬盤上,代碼也比較簡單,讀取屬性ufile中的內容,寫入磁盤指定位置。下面我們看看運行的結果截圖:

Struts2 控制文件上傳下載功能實例代碼

Struts2 控制文件上傳下載功能實例代碼

至此我們就完成了對上傳文件的獲取保存,總體上看來,實際上還是使用了三個action實例屬性對上傳文件相關信息的封裝。一個屬性封裝的是該上傳文件的二進制內容,一個屬性封裝該文件的文件名稱,一個屬性封裝的是該文件的文件類型。實際上把控好這三個屬性,基本可以完成對該上傳文件的所有操作。下面我們看文件下載。

二、struts文件下載機制

     廣義上的文件下載,其實可以使用a標簽鏈接到對應資源完成對資源的下載,但是在瀏覽器中使用這種方式會導致瀏覽器直接打開該資源文件而非彈出下載框指定下載位置。struts下載機制通過配置result元素的type屬性為stream來實現的。在類型為stream的result元素中可以配置一些參數,這些參數主要有以下一些:

contenttype:指定被下載文件的文件類型

inputname:指定被下載文件的輸入流入口

contentdisposition:指定下載文件的文件名

buffersize:指定下載文件的緩沖大小

具體的應用我們從代碼示例中體會:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//直接訪問的action
 <body>
   <a href="/download" rel="external nofollow" >下載資源</a>
 </body>
public class downloadfile extends actionsupport {
  private string inputpath;
  public void setinputpath(string s){
    this.inputpath = s;
  }
  public string getinputpath(){
    return this.inputpath;
  }
  public inputstream gettarfile(){
    return servletactioncontext.getservletcontext().getresourceasstream(inputpath);
  }
  @override
  public string execute(){
    return success;
  }
}
//download的action配置
    <action name="download" class="mypackage.downloadfile">
      <param name="inputpath">/m.jpg</param>
      <result type="stream">
        <param name="inputname">tarfile</param>
        <param name="contenttype">image/jpg</param>
        <param name="contentdisposition">attachment;filename="walker.jpg"</param>
      </result>
    </action>

首先解析下struts.xml中有關action的配置代碼,第一個param元素為action中的屬性inputpath動態賦值,該參數的值指定了將要被下載的文件資源位置,我們此處指定的web應用根目錄下的一張圖片。

接下來就是配置的結果類型result,該元素的默認type屬性為dispather表示分發的意思,而我們此處的stream表示流的意思,它將返回給瀏覽器一個inputstream(被下載文件的入口)。其中它配置了inputname,該參數的值對應于action中getxxxx方法,當接受到請求的時候,框架會通過該參數匹配調用action中的getxxxx方法,該方法會根據指定資源路徑返回該文件的入口inputstream,交給瀏覽器。

我們也看到contenttype參數指定了該文件的類型,和互聯網mime標準中的規定類型一致,例如:text/plain代表純文本,text/xml表示xml,image/gif代表gif圖片,image/jpeg代表jpg圖片等。

contentdisposition參數表示被下載文件在保存時候的文件名,它有兩個屬性值。第一個屬性值可以是inline或者attachment,它指定瀏覽器是直接打開還是下載,filename指定了下載或者打開文件的名稱。下面看上述代碼的運行結果截圖:

Struts2 控制文件上傳下載功能實例代碼

Struts2 控制文件上傳下載功能實例代碼

至此,有關struts控制文件的上傳和下載的相關內容已經簡單介紹完了,有些核心的,深層次的內容涉及到攔截器,所以當我們介紹完攔截器之后,想必大家會有更加深刻的理解。

以上所述是小編給大家介紹的struts2 控制文件上傳下載功能實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/yangming1996/p/6894026.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文一区| 亚洲欧美精品一区二区 | 成人在线免费视频 | 国产激情在线 | 成人福利视频 | 大香伊蕉在人线视频777 | 久久成人a | 日韩在线免费观看视频 | 一区二区三区不卡视频 | 亚洲精品午夜 | 午夜在线小视频 | 黄色国产视频 | 一级黄色大片 | 亚洲国产aⅴ成人精品无吗 久久综合久久久 | 色交视频| 夜夜操av | 黄色一级视频免费看 | 亚洲第一视频网站 | 成人黄色短视频在线观看 | 午夜精品成人一区二区 | 国产中文字幕在线 | www久久精品 | 欧美一级电影在线 | 成人在线免费 | 日本激情免费 | 久久99视频精品 | 日本免费在线视频 | 国产永久免费在线观看 | 91亚洲国产成人久久精品网站 | 国产精品久久久久久亚洲影视 | 国产成人久久精品一区二区三区 | 亚洲网站在线观看 | 久久精品一区二区三区四区 | 黄色高清网站 | 91综合网| 搞黄免费视频 | 国产成人在线看 | 91麻豆产精品久久久久久 | 久久久国色 | 激情六月婷 | 中文字幕在线观看日本 |