用 Hasor 實現文件上傳

    Hasor 採用了與 JFinal 相似的方式提供 API,底層的上傳機制是來自 apache commons fileupload 並將其進行大量簡化後內置到 Hasor 自身。html

    所以在 Hasor 中使用文件上傳功能無需引入任何第三方 jar 包您就能夠使用該功能,先從一個簡單的例子提及。java

@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
    public void execute() throws IOException {
        FileItem multipart = this.getOneMultipart("upfile");
        multipart.writeTo(...);
        multipart.deleteOrSkip();
    }
}

    而對應的 html 頁面就是一個普通的 文件表單上傳。linux

<form action="/fileupload.do" method="post" enctype="multipart/form-data">
    <input type="file" name="upfile"/>
    <input type="submit" value="上傳"/>
</form>

    大一點的文件,在上傳時服務器須要一個臨時存儲。使用 Hasor 上傳文件你能夠在解析上傳時指定臨時存儲目錄,也能夠使用 Hasor 環境變量中指定的默認上傳地址。默認狀況下 Hasor 使用默認位置進行緩存上傳數據。apache

緩存目錄

    下面是兩種上傳方式,第一種是用了 Hasor 默認自帶的緩存目錄配置。而第二種方式是用戶自定義上傳的緩存目錄和配置信息。緩存

@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
    public void execute() throws IOException {
        //
        // 方式1: - 使用默認緩存目錄
        FileItem multipart = this.getOneMultipart("upfile");
        multipart.writeTo(new File(""));
        multipart.deleteOrSkip();
        //
        // 方式2: - 使用自定義緩存目錄
        String cacheDirectory = "...";
        Integer maxPostSize = 1024 * 1024;
        FileItem multipart1 = this.getOneMultipart("upfile", cacheDirectory, maxPostSize);
    }
}

    而在接下來將會介紹一下 Hasor 默認的上傳緩存配置。服務器

    臨時上傳緩存的配置信息保存在:「hasor.fileupload.cacheDirectory」配置項下。這個配置位於 hasor jar 包中的「static-config.xml」配置文件中。具體內容以下:app

...
<hasor>
    ...
    <!-- 文件上傳 -->
    <fileupload>
        <!-- 上傳文件緩存目錄 -->
        <cacheDirectory>${HASOR_TEMP_PATH}/fragment</cacheDirectory>
        <!-- 容許的請求大小 ( -1 表示不限制)-->
        <maxRequestSize>-1</maxRequestSize>
        <!-- 容許上傳的單個文件大小( -1 表示不限制) -->
        <maxFileSize>-1</maxFileSize>
    </fileupload>
    ...
</hasor>
...

    在這段配置文件中 「HASOR_TEMP_PATH」 表示的是一個環境變量,在 static-config.xml 配置文件的 「environmentVar」 節點下能夠找到這個環境變量的內容。post

<environmentVar>
    ...
    <!-- 工做目錄 -->
    <WORK_HOME>%USER.HOME%/hasor-work</WORK_HOME>
    <!-- 臨時文件位置 -->
    <HASOR_TEMP_PATH>%WORK_HOME%/temp</HASOR_TEMP_PATH>
    ...
</environmentVar>

    默認狀況下 「HASOR_TEMP_PATH」 的配置信息是 「%WORK_HOME%/temp」,咱們看到這又是一組環境變量。「WORK_HOME」 默認狀況下表示的是 「USER.HOME」。而這是用戶登陸系統以後的用戶主目錄。this

    若是您是 linux 系統那麼這個目錄一般在這裏:「/home/xxx」,若是是 window 用戶用戶住目錄會在「c:/users」下面。spa

相關文章
相關標籤/搜索