程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Struts2 之 實現文件上傳和下載,struts2文件上傳

Struts2 之 實現文件上傳和下載,struts2文件上傳

編輯:JAVA綜合教程

Struts2 之 實現文件上傳和下載,struts2文件上傳


Struts2  之 實現文件上傳和下載

必須要引入的jar

wpsA339.tmp

commons-fileupload-1.3.1.jar

commons-io-2.2.jar

01.文件上傳需要分別在struts.xml配置 和 創建文件上傳必要的類、

Jsp頁面的截圖

wpsA359.tmp

Struts.xml中的配置

配置上傳需要的savePath(文件上傳路徑)和 指定文件上傳的類

wpsA35A.tmp

<action name="upload" class="cn.wz.upload.action.UploadAction" >

<param name="savePath">/upload</param>

<result name="success">success.jsp</result>

</action>

UploadAction類中的配置

該類需要繼承自ActionSupport ,重寫它的execute方法。

還要設置幾個必要的屬性:

uploadFileName(文件名)、

savePath(文件保存路徑地址)、

uploadContentType(上傳文件的類型)、

File file(該屬性的類型是File類型,封裝了上傳文件的屬性)。

public String execute() throws Exception {

byte[] bytes=new byte[1024];

FileInputStream fis=new FileInputStream(getUpload());

FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName());

int lenth=fis.read(bytes);

while (lenth>0) {

fos.write(bytes, 0, lenth);

lenth=fis.read(bytes);

}

fis.close();

fos.flush();

fos.close();

return SUCCESS;

}

省略get和set方法...

public String getSavePath() {

return ServletActionContext.getServletContext().getRealPath(savePath);

}

wpsA35B.tmp

02.實現多文件上傳、實現多文件上傳的操作非常簡單,在表單中添加多個相同的name屬性的File控件,這樣當表單提交時,將會提交一個數組。因此,只需要在上傳Action中將原本處理單個文件的操作改成對集合的操作即可。

public String execute() throws Exception {

byte[] bytes=new byte[1024];

for (int i = 0; i < upload.length; i++) {

FileInputStream fis=new FileInputStream(getUpload()[i]);

FileOutputStream fos=new FileOutputStream(getSavePath()+"\\"+getUploadFileName()[i]);

int lenth=fis.read(bytes);

while (lenth>0) {

fos.write(bytes, 0, lenth);

lenth=fis.read(bytes);

}

fis.close();

fos.flush();

fos.close();

}

return SUCCESS;

}

03.文件下載、Struts2為了支持文件的下載,提供了Stream結果類型,該類型的作用就是專門用於實現文件下載功能。

Stream結果類型。

該類型在實現文件下載功能時需要指定一個輸入流,即inputStream參數,通過這個流就可以輸出下載的文件內容。我們可能還需要對相關的參數進行配置,如MIME類型、HTTP請求頭信息、緩沖區的大小等。

Stream結果了類型的配置參數

contentType:發送到浏覽器的MIME類型。

contentLength:設置文件的大小。

contentDisposition:設置響應的inputStream類型的屬性名稱。

inputName:指定Action中提供的inputStream類型的屬性名稱。

bufferSize:讀取和下載時的緩沖區大小。

文件下載(當前示例是在jsp頁面有一個指向固定的文件地址的鏈接,來實現文件下載的,日後有需要的時候可以更換為動態的)

該類同樣是要繼承自ActionSupport 

設置一些必要的屬性:

InputPath (讀取下載文件的目錄)

fileName (下載文件的文件名)

InputStream inputstream (讀取下載文件的輸入流)

ContentType (下載文件的類型)

需要創建InputStream輸入流

public InputStream getInputStream()throws FileNotFoundException {

String path=ServletActionContext.getServletContext().getRealPath(inputPath);

return new BufferedInputStream(new FileInputStream(path+"\\"+fileName));

}

wpsA35C.tmp

省略get和set方法...

文件下載主要就是在struts.xml文件中的配置信息

wpsA35D.tmp

<action name="down" class="cn.wz.upload.action.DownAction" >

<param name="inputPath">/upload</param>

<result name="success" type="stream">

<param name="contentType">application/msword</param>

<param name="inputName">inputStream</param>

<param name="contentDisposition">

attachment;filename="${fileName}"

</param>

<param name="bufferSize">4096</param>

</result>

</action>

在配置文件中,ContentType參數決定了下載問阿金的類型。不同的文件類型對應的參數值也是不同的。

ContentType對應的文件類型

文檔類型>>>ContentType設置

Word>>>Application/msword

Excel>>>Application/vnd.ms-excel

PPT>>>Application/vnd.ms-powerpoint

圖片>>>image/gif、image/bmp、image/jpeg

文本文件>>>text/plain

HTML網頁>>>text/html

可執行文件>>>application/octet-stream

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved