post 一个excel文件。python服务器接收body 使用b64解码 变成二进制了。 传过来的文件在body里面 Content-Type=multipart/form-data 解码后二进制文件也读不出 文件详细内容
时间: 2023-02-05 22:41:04 浏览: 57
可以使用 Python 的 base64 模块来解码 base64 编码的文件。例如:
```
import base64
# 获取 base64 编码的文件数据
file_data = request.body
# 将文件数据解码为二进制
binary_data = base64.b64decode(file_data)
# 将二进制数据写入文件
with open('decoded_file.xlsx', 'wb') as f:
f.write(binary_data)
```
如果文件的内容无法正确读取,可能是文件格式不正确或者文件损坏了。你可以尝试使用 Python 的其他库来处理 Excel 文件,比如 pandas、openpyxl 等。
注意:Content-Type=multipart/form-data 表示请求的数据是表单数据,通常用于文件上传。如果需要解析这种类型的数据,你需要使用 Python 的 requests 模块或者其他工具来解析表单数据。
相关问题
express服务器接收Content-Type是application/octet-stream二进制数据的代码
以下是使用express框架接收Content-Type为application/octet-stream二进制数据的示例代码:
```javascript
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
//设置body-parser中间件
app.use(bodyParser.raw({ type: 'application/octet-stream', limit: '10mb' }));
//处理POST请求
app.post('/upload', (req, res) => {
//获取二进制数据
const data = req.body;
//处理数据
//...
res.send('success');
});
//启动服务器
app.listen(3000, () => {
console.log('Server started on port 3000');
});
```
在上面的代码中,我们使用了`body-parser`中间件来解析请求体中的二进制数据。在`app.use`方法中,我们指定了`type`为`application/octet-stream`,表示只解析该类型的请求体数据。`limit`参数表示请求体数据的大小限制,超过该大小的请求将会被拒绝。在处理POST请求时,我们可以通过`req.body`获取到请求体中的二进制数据,并进行处理。最后通过`res.send`方法返回响应结果。
vue 使用post下载文件二进制流
在Vue中使用POST请求下载文件的二进制流,可以通过以下步骤实现:
1. 首先,需要在Vue项目中安装axios,可以通过命令`npm install axios`进行安装。
2. 在需要下载文件的组件中,引入axios模块,可以使用`import axios from 'axios'`导入axios。
3. 创建一个方法来处理文件下载,例如`downloadFile`。
4. 在`downloadFile`方法中,使用axios发送POST请求,并设置`responseType`为`blob`,表示接收二进制流的响应。
5. 在请求的数据中,设置相应的请求头`Content-Type`为`application/json`(根据接口要求)。
6. 在成功响应的回调函数中,将获取到的二进制流数据转换成Blob对象并创建URL。
7. 创建一个a标签用于生成下载链接,并设置其属性href为之前创建的URL,属性download为下载文件的文件名。
8. 把a标签添加到页面上,并模拟点击以下载文件。
下面是一个示例代码:
```vue
<template>
<div>
<button @click="downloadFile">下载文件</button>
</div>
</template>
<script>
import axios from 'axios';
export default {
methods: {
downloadFile() {
axios.post('http://example.com/download', {
// 请求体数据根据接口要求设置
}, {
responseType: 'blob', // 设置响应数据类型为二进制流
headers: {
'Content-Type': 'application/json' // 根据接口要求设置请求头
}
})
.then(response => {
const url = window.URL.createObjectURL(new Blob([response.data])); // 转换成Blob对象并创建URL
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.jpg'); // 设置下载文件的文件名
link.click();
link.remove(); // 移除生成的a标签
})
.catch(error => {
console.log(error);
});
}
}
}
</script>
```
上述代码会在点击按钮时发送一个POST请求,接收到响应后将其转换成Blob对象,并通过模拟点击a标签的方式下载文件。如需更改下载的文件名,可修改`setAttribute('download', 'file.jpg')`中的文件名部分。
注意:请求地址、请求数据、请求头等根据实际情况进行设置。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)