W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
文件上傳是 web 框架必備的核心技能,Hasor 內(nèi)置了 apache 的 fileuplaod 組件,并且對(duì)該組件做了大量精簡優(yōu)化。因此您在使用 Hasor 的文件上傳時(shí)不需要引入任何第三方 jar 即可使用。
使用文件上傳,您必須通過 WebController 類進(jìn)行操作,我們先看一下簡單的文件上傳例子,首先新建一個(gè)請(qǐng)求處理器:
@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
public void execute() throws IOException {
FileItem multipart = this.getOneMultipart("upfile");
multipart.writeTo(...);
multipart.deleteOrSkip();
}
}
而對(duì)應(yīng)的 html 頁面就是一個(gè)普通的 文件表單上傳。
<form action="/fileupload.do" method="post" enctype="multipart/form-data">
<input type="file" name="upfile"/>
<input type="submit" value="上傳"/>
</form>
大一點(diǎn)的文件,在上傳時(shí)服務(wù)器需要一個(gè)臨時(shí)存儲(chǔ)。使用 Hasor 上傳文件你可以在解析上傳時(shí)指定臨時(shí)存儲(chǔ)目錄,也可以使用 Hasor 環(huán)境變量中指定的默認(rèn)上傳地址。默認(rèn)情況下 Hasor 使用默認(rèn)位置進(jìn)行緩存上傳數(shù)據(jù)。
Hasor 中默認(rèn)緩存路徑是“%WORK_HOME%/temp/fragment”,這是解析 "hasor.fileupload.cacheDirectory" 配置項(xiàng)得到的結(jié)果。您可以在 Hasor 內(nèi)置靜態(tài)文件 “static-config.xml” 中找到它們。
上傳配置下面是兩種上傳方式,第一種是用了 Hasor 默認(rèn)自帶的緩存目錄配置。而第二種方式是用戶自定義上傳的緩存目錄和配置信息。
@MappingTo("/fileupload.do")
public class FileupLoad extends WebController {
public void execute() throws IOException {
//
// 方式1: - 使用默認(rèn)緩存目錄
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);
}
}
而在接下來將會(huì)介紹一下 Hasor 默認(rèn)的上傳緩存配置。臨時(shí)上傳緩存的配置信息保存在:“hasor.fileupload.cacheDirectory”配置項(xiàng)下。這個(gè)配置位于 hasor jar 包中的“static-config.xml”配置文件中。具體內(nèi)容如下:
...
<hasor>
...
<!-- 文件上傳 -->
<fileupload>
<!-- 上傳文件緩存目錄 -->
<cacheDirectory>${HASOR_TEMP_PATH}/fragment</cacheDirectory>
<!-- 允許的請(qǐng)求大小 ( -1 表示不限制)-->
<maxRequestSize>-1</maxRequestSize>
<!-- 允許上傳的單個(gè)文件大小( -1 表示不限制) -->
<maxFileSize>-1</maxFileSize>
</fileupload>
...
</hasor>
...
在這段配置文件中 “HASOR_TEMP_PATH” 表示的是一個(gè)環(huán)境變量,在 static-config.xml 配置文件的 “environmentVar” 節(jié)點(diǎn)下可以找到這個(gè)環(huán)境變量的內(nèi)容。
<environmentVar>
...
<!-- 工作目錄 -->
<WORK_HOME>%USER.HOME%/hasor-work</WORK_HOME>
<!-- 臨時(shí)文件位置 -->
<HASOR_TEMP_PATH>%WORK_HOME%/temp</HASOR_TEMP_PATH>
...
</environmentVar>
默認(rèn)情況下 “HASOR_TEMP_PATH” 的配置信息是 “%WORK_HOME%/temp”,我們看到這又是一組環(huán)境變量?!癢ORK_HOME” 默認(rèn)情況下表示的是 “USER.HOME”。而這是用戶登錄系統(tǒng)之后的用戶主目錄。
如果您是 linux 系統(tǒng)那么這個(gè)目錄通常在這里:“/home/xxx”,如果是 window 用戶用戶住目錄會(huì)在“c:/users”下面。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: