gpt4 book ai didi

Java - 高效处理文件上传并创建新的http请求

转载 作者:太空宇宙 更新时间:2023-11-04 06:36:25 26 4
gpt4 key购买 nike

在我的自定义应用程序中,我通过文件上传表单接受文件并获取 MultipartFile 对象。然后,根据上传表单中的其他参数,我进行一些处理,并准备另一个包含文件的 POST 请求,并将请求发送到另一台服务器。

我使用的代码如下:

在 Controller 部分我采用输入流

             MultipartFile file = uploadedFile.getFile();
InputStream inputStream = file.getInputStream();

流被传递到服务方法并准备新请求,如下

            CloseableHttpClient closeableHttpClient = HttpClients.createDefault();

HttpPost uploadFile = new HttpPost(url + port + path);

MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();

.... other parameters set here....


multipartEntityBuilder.addBinaryBody("attachment", IOUtils.toByteArray(inputStream), ContentType.APPLICATION_OCTET_STREAM, fileName);

HttpEntity httpEntity = multipartEntityBuilder.build();

uploadFile.setEntity(httpEntity);

HttpResponse httpResponse = closeableHttpClient.execute(uploadFile);

有没有更有效的方法来做到这一点,就是转换

     file.getInputStream()

     byte[] // by IOUtils.toByteArray(inputStream)

真的需要吗?

对此方法的任何其他建议也表示赞赏。

最佳答案

我们可以直接使用inputStream调用multipartEntityBuilder.addBinaryBody方法,如下所示:

multipartEntityBuilder.addBinaryBody("attachment", IOUtils.toByteArray(inputStream), ContentType.APPLICATION_OCTET_STREAM, fileName);

因此,IOUtils.toByteArray() 方法会导致内存使用量大幅增加,并且文件将通过流式传输发送。

关于Java - 高效处理文件上传并创建新的http请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25327228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com