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