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

我正在使用带有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;

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Vue.js中的axios库来向服务器发送POST请求,将数据储到JSON文件中。首先,确保你已经安装了axios库。然后,你可以按照以下步骤进行操作: 1. 在你的Vue组件中,导入axios库: ```javascript import axios from 'axios'; ``` 2. 创建一个方法来发送POST请求并数据到JSON文件: ```javascript methods: { async saveDataToFile(data) { try { const response = await axios.post('/api/saveData', data); console.log(response.data); // 可选:打印服务器响应数据 } catch (error) { console.error(error); } } } ``` 3. 在服务器端创建一个API接口来处理POST请求并将数据储到JSON文件中。这里假设你使用Node.js和Express框架来创建服务器。在服务器端的路由文件中,添加以下代码: ```javascript const express = require('express'); const router = express.Router(); const fs = require('fs'); router.post('/saveData', (req, res) => { const data = req.body; // 从请求体中获取数据 // 将数据转换为JSON格式字符串 const jsonData = JSON.stringify(data); // 将JSON字符串写入到JSON文件中 fs.writeFile('data.json', jsonData, 'utf8', (err) => { if (err) { console.error(err); res.status(500).send('Error saving data to file'); } else { res.send('Data saved to file'); } }); }); module.exports = router; ``` 以上代码将请求体中的数据转换为JSON格式字符串,并将其写入名为"data.json"的文件中。如果写入过程中出现错误,将返回500状态码,否则返回成功的消息。 请注意,这只是一个简单示例,你可能需要根据自己的需求进行相应的修改。另外,确保你在服务器端配置了正确的路由和端口号,以便Vue.js应用程序能够与服务器进行通信。 希望这能帮助到你!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值