第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法創(chuàng)建生成的 HTTP 客戶端所需的返回類型,因?yàn)闆]有從 ByteBuffer

無法創(chuàng)建生成的 HTTP 客戶端所需的返回類型,因?yàn)闆]有從 ByteBuffer

牧羊人nacy 2023-09-20 17:03:32
下面是使用 micronaut 將文件作為休息響應(yīng)發(fā)送到客戶端的服務(wù)器端代碼。@Get(value = "/downloadFile", produces = MediaType.APPLICATION_OCTET_STREAM )public HttpResponse<File> downloadDocument() throws IOException {    File sampleDocumentFile = new File(getClass().getClassLoader().getResource("SampleDocument.pdf").getFile());    return HttpResponse.ok(sampleDocumentFile).header("Content-Disposition", "attachment; filename=\"" + sampleDocumentFile.getName() + "\"" );}下面是調(diào)用上述端點(diǎn)的客戶端。@Client(value = "/client")public interface DownloadDocumentClient {@Get(value = "/downloadDocument", processes = MediaType.APPLICATION_OCTET_STREAM)public Flowable<File> downloadDocument();}嘗試檢索文件如下:-Flowable<File> fileFlowable = downloadDocumentClient.downloadDocument();    Maybe<File> fileMaybe = fileFlowable.firstElement();    return fileMaybe.blockingGet();獲取異常為io.micronaut.context.exceptions.ConfigurationException:無法創(chuàng)建生成的 HTTP 客戶端所需的返回類型,因?yàn)闆]有注冊從 ByteBuffer 到類 java.io.File 的 TypeConverter
查看完整描述

1 回答

?
幕布斯7119047

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊

您無法使用實(shí)例發(fā)送文件數(shù)據(jù)File,因?yàn)樗鼉H包含路徑而不包含文件內(nèi)容。您可以使用字節(jié)數(shù)組發(fā)送文件內(nèi)容。


以這種方式更新控制器:


@Get(value = "/download", produces = MediaType.APPLICATION_OCTET_STREAM)

public HttpResponse<byte[]> downloadDocument() throws IOException, URISyntaxException {

    String documentName = "SampleDocument.pdf";

    byte[] content = Files.readAllBytes(Paths.get(getClass().getClassLoader().getResource(documentName).toURI()));

    return HttpResponse.ok(content).header("Content-Disposition", "attachment; filename=\"" + documentName + "\"");

}

那么客戶端將會是這樣的:


@Get(value = "/download", processes = MediaType.APPLICATION_OCTET_STREAM)

Flowable<byte[]> downloadDocument();

最后客戶致電:


Flowable<byte[]> fileFlowable = downloadDocumentClient.downloadDocument();

Maybe<byte[]> fileMaybe = fileFlowable.firstElement();

byte[] content = fileMaybe.blockingGet();

更新: 如果您需要將接收到的字節(jié)(文件內(nèi)容)保存到客戶端計算機(jī)(容器)上的文件中,那么您可以這樣做,例如:


Path targetPath = Files.write(Paths.get("target.pdf"), fileMaybe.blockingGet());

如果您確實(shí)需要實(shí)例File而不是Path進(jìn)一步處理,那么只需:


File file = targetPath.toFile();


查看完整回答
反對 回復(fù) 2023-09-20
  • 1 回答
  • 0 關(guān)注
  • 99 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號