Struts2教學
Struts2快速入門
Struts2 MVC架構
Struts2 是什麼?
Struts2 環境配置
Struts2 體系結構
Struts2 Hello World 實例
Struts2 配置文件
Struts2 Action/動作
Struts2 攔截器
Struts2 結果和結果類型
Struts2 值棧/OGNL
Struts2 文件上傳
Struts2 MySQL數據庫訪問
Struts2 發送郵件Email
Struts2 驗證框架
Struts2 基於XML校驗
Struts2 本地化/國際化(i18n)
Struts2 類型轉換
Struts2 主題和模板
Struts2 異常處理
Struts2 註釋
Struts2 註釋類型
Struts2 控件標籤
Struts2 iterator標籤
Struts2 if/else標籤
Struts2 merge標籤
Struts2 append標籤
Struts2 generator標籤
Struts2 數據標籤
Struts2 action標籤
Struts2 include標籤
Struts2 bean 標籤
Struts2 date 標籤
Struts2 param 標籤
Struts2 property 標籤
Struts2 set 標籤
Struts2 text 標籤
Struts2 url標籤
Struts2 表單標籤
Struts2 Ajax 標籤
Struts2和Spring集成
Struts2和Tiles集成
Struts2和Hibernate集成
Struts 2 hello world (XML版本)
Struts2註解示例
Struts2 @ResultPath註釋示例
Struts2 include(包含)多個配置文件
Struts2命名空間配置和解釋
Struts2開發者模式
如何刪除Struts2動作的後綴擴展名
使用Struts2動作
Struts2的ActionError&ActionMessage示例
Struts2模型驅動實例
Struts2映射攔截動作
Struts2重寫攔截器參數
Struts2攔截器棧的例子
Struts2 execAndWait攔截器例子
Struts2 <s:textfield>文本示例
Struts2 <s:password>密碼示例
Struts2 <s:hidden>隱藏值例子
Struts2 <s:textarea>文本域實例
Struts2 <s:radio>單選按鈕例子
Struts2單選預選按鈕值
Struts2 <s:checkbox>複選框例子
Struts2設置多個複選框缺省值
Struts2 <s:checkboxlist>多個複選框例子
Struts2 <s:select>下拉框例子
Struts2自動選擇下拉框的值
Struts2 <s:combobox>組合框的例子
Struts2 <s:head>示例
Struts2文件上傳例子
Struts2上傳多個文件例子
Struts2 <s:doubleselect>示例
Struts2 <s:updownselect>示例
Struts2 <s:optiontransferselect>示例
Struts2 <sx:datetimepicker>示例
Struts2 <sx:autocompleter>自動提示例子
Struts2 autocompleter+JSON例子
Struts2 <s:iterator>迭代器標籤示例
Struts2 if,elseif,else標籤示例
struts2 <s:append>標籤示例
Struts2 <s:generator>標籤示例
Struts2 <s:merge>標籤示例
Struts2 <s:sort>標籤示例
Struts2 <s:subset>標籤示例
Struts2 <s:a>標籤示例
Struts2 <s:action>標籤示例
Struts2 <s:bean>標籤示例
Struts2 <s:date>標籤示例
Struts2 <s:debug>標籤示例
Struts2 <s:include>標籤示例
Struts2 <s:i18n>標籤示例
Struts2 <s:param>標籤示例
Struts2 <s:property>標籤實例
Struts2 <s:push>標籤示例
Struts2 <s:set>標籤示例
Struts2 <s:texttag>標籤示例
Struts2 <s:url>標籤示例
Struts2資源包使用示例
Struts2本地化和國際化
Struts2 key鍵屬性示例
Struts2中文本地化問題
如何配置Struts2全局資源包
Struts2+Spring集成實例
Struts2+Quartz2調度集成實例
Struts2+Hibernate使用Full Hibernate Plugin集成
Struts2+Hibernate集成實例
Struts2+Spring+Hibernate集成實例
Struts2+Log4j集成
Struts2的FilterDispatcher和StrutsPrepareAndExecuteFilter有什麼不同?
Struts2獲取HttpServletRequest實例
Struts2獲取HttpServletResponse實例
如何獲取ServletContext對象
Struts2配置Action類的靜態參數
Struts2下載文件實例
Struts2和JSON實例

Struts2文件上傳例子

在Struts2, <s:file> 標籤用於創建一個HTML文件上傳組件,允許用戶從本地磁盤選擇文件,並將其上傳到服務器。在本教程中,您將創建與文件上傳組件JSP頁面,設置最大大小和允許上傳文件的內容類型,並顯示上傳文件的詳細信息。

這裏創建一個Web工程:strut2uploadfile,來演示在多個複選框如何設置的默認值,整個項目的結構如下圖所示:

Struts2文件上傳例子

1. 動作類

Action類的文件上傳,聲明「File」變量來存儲用戶上傳的文件,兩個字符串變量以存儲文件名和內容類型。「文件上傳攔截器」通過設置「X」的ContentType(),並設置「X」FileName()會自動注入上傳的文件細節,確保方法名拼寫正確。

P.S X是以存儲上傳的文件中的變量。

文件上傳功能是依賴於「文件上傳攔截器」,確保將其納入行動的堆棧。幸運的是,默認的堆棧已經包含了「文件上傳攔截器」。

FileUploadAction.java

package com.yiibai.common.action;

import java.io.File;

import com.opensymphony.xwork2.ActionSupport;

public class FileUploadAction extends ActionSupport{

private File fileUpload;
private String fileUploadContentType;
private String fileUploadFileName;

public String getFileUploadContentType() {
    return fileUploadContentType;
}

public void setFileUploadContentType(String fileUploadContentType) {
    this.fileUploadContentType = fileUploadContentType;
}

public String getFileUploadFileName() {
    return fileUploadFileName;
}

public void setFileUploadFileName(String fileUploadFileName) {
    this.fileUploadFileName = fileUploadFileName;
}

public File getFileUpload() {
    return fileUpload;
}

public void setFileUpload(File fileUpload) {
    this.fileUpload = fileUpload;
}

public String execute() throws Exception{

    return SUCCESS;

}

public String display() {
    return NONE;
}

}

2. 結果頁面

使用<s:file>標籤來渲染一個文件上傳組件,並設置表單的enctype類型爲:「multipart/form-data」。

fileupload.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

Struts 2 file upload example

<s:form action="resultAction" namespace="/"
method="POST" enctype="multipart/form-data">

<s:file name="fileUpload" label="Select a File to upload" size="40" />

<s:submit value="submit" name="submit" />

result.jsp

<%@ taglib prefix="s" uri="/struts-tags" %>

Struts 2 file upload example

File Name :

Content Type :

File :

3. struts.xml

 <constant name="struts.devMode" value="true" />
 <constant name="struts.custom.i18n.resources" value="global" />

<package name="default" namespace="/" extends="struts-default">

<action name="fileUploadAction" 
    class="com.yiibai.common.action.FileUploadAction" method="display">
    <result name="none">/pages/fileupload.jsp</result>
</action>

<action name="resultAction" class="com.yiibai.common.action.FileUploadAction">
    <interceptor-ref name="exception"/>
        <interceptor-ref name="i18n"/>
        <interceptor-ref name="fileUpload">
           <param name="allowedTypes">text/plain</param>
           <param name="maximumSize">10240</param>
      </interceptor-ref> 
        <interceptor-ref name="params">
            <param name="excludeParams">dojo\\..\*,^struts\\..\*</param>
        </interceptor-ref>
        <interceptor-ref name="validation">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>
        <interceptor-ref name="workflow">
            <param name="excludeMethods">input,back,cancel,browse</param>
        </interceptor-ref>

    <result name="success">/pages/result.jsp</result>
    <result name="input">/pages/fileupload.jsp</result>

</action>

文件大小限制
在這個例子中,您將通過「文件上傳攔截」上傳文件大小的限制, 該值以字節爲單位計數。在本實例中,上載文件的最大尺寸是10KB。

注:上傳文件的默認最大文件大小爲2MB

文件類型
可以通過設置「文件上傳攔截器」允許的文件類型。在這種情況下,上傳文件只接受「text/plain」的類型。

在Struts2中,有好幾種方面做到這一點,查看 Struts2的文件上傳文檔

4. 示例

http://localhost:8080/Struts2Example/fileUploadAction.action

Struts2文件上傳例子

錯誤信息提示,如果您上傳一個文件,該文件超過10KB,或者未選文本文件。

Struts2文件上傳例子

上傳名爲「yiibai.com.txt」的文本文件, 文件大小 : 5kb.

Struts2文件上傳例子

上傳的文件將被視爲一個臨時文件,具有長的隨機文件名,如:upload__376584a7_12981122379__8000_00000010.tmp. 請確保這個臨時文件複製到其他地方。 閱讀文件實用文檔複製文件。

參考

  1. Struts 2 文件文檔
  2. http://struts.apache.org/2.0.14/docs/file-upload.html
  3. http://struts.apache.org/2.0.14/docs/how-do-we-upload-files.html
  4. http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html

下載代碼 – http://pan.baidu.com/s/1eQDH07S