将数据以文件的形式存到服务器,Spring Boot Async将一些数据传递到服务器,以文件形式等待响应...

本文探讨了如何在SpringBoot 2应用中通过异步方式发送POST请求,以便从服务器接收HTML并转换为PDF。作者分享了关于创建临时文件、流处理和最佳实践的代码片段,并寻求改进建议,以提高文件传输效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在使用带有io和nio的Spring Boot 2创建对服务器的异步调用,然后该服务器返回文件。对于此设置,我创建了一个简单的服务器,该服务器接受一些html输入,然后返回pdf。

我的问题在于将数据(在此示例中为一些简单的html)传递到生成pdf输出的服务器。如何最好地使用Spring Boot创建POST请求?我应该首先使用POST吗?

下面的代码用于从服务器获取和传递pdf。

它的作用:

创建将接收数据的输入流

创建将写入临时文件的输出流

打开连接并流到临时文件,直到完成

代码:

@Async

private File getPdf(String html) {

BufferedInputStream inputStream = null;

OutputStream outputStream = null;

File pdf = null;

byte data[] = new byte[1024];

int byteContent;

try {

URL url = new URL("http://localhost:3000/html2pdf");

inputStream = new BufferedInputStream(url.openStream());

File directory = new File(System.getProperty("java.io.tmpdir"));

pdf = File.createTempFile("test", ".pdf", directory);

outputStream = Files.newOutputStream(Paths.get(pdf.getPath()));

while ((byteContent = inputStream.read(data, 0, 1024)) != -1) {

outputStream.write(data, 0, byteContent);

}

} catch (IOException e) {

e.printStackTrace();

} finally {

try {

if (outputStream != null) {

outputStream.flush();

outputStream.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

return pdf;

}

也非常欢迎其他有关如何使此代码更好的想法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值