在python请求库中的文件参数的JS等效是什么?



我有一个api,用于通过post端点上传文件。以下是我在python中成功完成的方法:

files = {
'payload': (None, json.dumps(payload), 'application/json'),
'file': (file_name, open(full_path, 'rb'), 'application/octet-stream')
}
r = requests.post(f'{url}upload/', files=files)

我需要一种方法,使这个完全相同的请求使用axios在JS。

我已尝试以下操作失败:

<<ol>
  • 格式包/gh><<li> formdata-node包/gh><<li> axios-form-data包/gh>使用axios-form-data包,我尝试发送这样的请求:

    async uploadFile(form_data, file_part) {
    axios.interceptors.request.use(axiosFormData);
    return await axios.request({
    method: 'POST',
    url: `${url}`upload/',
    data: {
    payload: 'Non-file value',
    file: fs.readFileSync("test/helpers/resources/test.csv", "utf-8");
    }
    });
    }
    
    每次,对于每个库,我的api端点都被击中,但是带有一个空请求。form object (api由Flask在python中构建)

    当我尝试发送此请求时,我做错了什么?

    同样,在我的包中设置为type: module。所以我不能使用CommonJS包。

    编辑:将axios-form-data函数改为如下,仍然不成功:

    async uploadFile(form_data, file_path) {
    axios.interceptors.request.use(axiosFormData);
    return await axios.request({
    method: 'POST',
    url: `${url}`upload/',
    data: {
    payload: 'Non-file value',
    file: fs.createReadStream(file_path);
    }
    });
    }
    
  • fs.readFileSync("test/helpers/resources/test.csv", "utf-8")

    readFileSync返回值为字符串

    axios-form-data仅在检测到文件时工作。

    根据文档使用createReadStream(也来自fs模块)。

    最新更新