POST 方法将 header 添加到损坏它的 xlsx 文件

POST method adds a header to an xlsx file which corrupts it

我正在尝试使用 Python 请求库发送 xlsx 文件。我的请求如下所示:

import requests

url_attachment = "http://127.0.0.1:5000/api/attachment"
payload={}
files=[('file',(filename, open(filename,'rb'),'application/octet-stream'))
]
headers = {}
requests.request("POST", url_attachment, headers=headers, data=payload, files=files)

我的模拟服务器如下所示:

import flask
from flask import request

app = flask.Flask(__name__)
app.config["DEBUG"] = True


@app.route('/', methods=['GET'])
def home():
    return "<h1>Hello World</h1>"

@app.route('/api/attachment', methods=['POST'])
def get_file():
    data = request.files['file']
    data.save('the-file.xlsx')

    return "ok"



app.run()

模拟服务器工作正常,文件发送正确。 但是,当我调用实际的 API(我无权访问)时,文件已损坏。 API 的所有者向我发送了损坏的文件,经过检查后我可以看到内容被包裹在这个文件中:

-------------------------------28947758029299
Content-Disposition: form-data; name="the-file.xlsx"; filename="the-file.xlsx"
Content-Type: application/octet-stream

//content

-------------------------------28947758029299--

有人知道为什么会这样吗?我可以改变我的功能来阻止这种情况发生吗?我也尝试将 Content-Type 更改为 application/vnd。openxmlformatsofficedocument.spreadsheetml.sheet 但显然这会导致同样的问题。

此问题现已解决。如果以后有人遇到类似的问题,原因是 API 中的接收方法将内容视为 'multi-part form data'。