W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Micronaut 支持通過(guò)幾種簡(jiǎn)單的方式向客戶(hù)端發(fā)送文件。
發(fā)送文件對(duì)象
可以從控制器方法返回一個(gè) File 對(duì)象,數(shù)據(jù)將返回給客戶(hù)端。文件響應(yīng)的 Content-Type 標(biāo)頭是根據(jù)文件名計(jì)算的。
要控制正在發(fā)送的文件的媒體類(lèi)型,或設(shè)置要下載的文件(即使用 Content-Disposition 標(biāo)頭),請(qǐng)使用要使用的文件構(gòu)造一個(gè) SystemFile。例如:
發(fā)送系統(tǒng)文件
@Get
public SystemFile download() {
File file = ...
return new SystemFile(file).attach("myfile.txt");
// or new SystemFile(file, MediaType.TEXT_HTML_TYPE)
}
發(fā)送輸入流
對(duì)于無(wú)法引用 File 對(duì)象的情況(例如 JAR 文件中的資源),Micronaut 支持傳輸輸入流。要從控制器方法返回?cái)?shù)據(jù)流,請(qǐng)構(gòu)造一個(gè) StreamedFile。
為方便起見(jiàn),StreamedFile 的構(gòu)造函數(shù)也接受 java.net.URL。
發(fā)送 StreamedFile
@Get
public StreamedFile download() {
InputStream inputStream = ...
return new StreamedFile(inputStream, MediaType.TEXT_PLAIN_TYPE)
// An attach(String filename) method is also available to set the Content-Disposition
}
如果正在傳輸?shù)奈募](méi)有更改,并且請(qǐng)求包含適當(dāng)?shù)臉?biāo)頭,則服務(wù)器支持返回 304(未修改)響應(yīng)。此外,如果客戶(hù)端接受編碼響應(yīng),Micronaut 會(huì)在適當(dāng)時(shí)對(duì)文件進(jìn)行編碼。如果文件是基于文本的并且默認(rèn)情況下大于 1KB,則會(huì)進(jìn)行編碼。數(shù)據(jù)編碼的閾值是可配置的。
要使用自定義數(shù)據(jù)源通過(guò)輸入流發(fā)送數(shù)據(jù),請(qǐng)構(gòu)造 PipedInputStream 和 PipedOutputStream 以將數(shù)據(jù)從輸出流寫(xiě)入輸入。確保在單獨(dú)的線(xiàn)程上完成工作,以便可以立即返回文件。
緩存配置
默認(rèn)情況下,文件響應(yīng)包含緩存標(biāo)頭。以下選項(xiàng)確定如何構(gòu)建 Cache-Control 標(biāo)頭。
屬性 | 類(lèi)型 | 描述 |
---|---|---|
|
int |
緩存秒。默認(rèn)值 (60)。 |
屬性 | 類(lèi)型 | 描述 |
---|---|---|
|
設(shè)置緩存控制配置。 |
|
|
boolean |
設(shè)置緩存控件是否公開(kāi)。默認(rèn)值(假) |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: