javascript python requests库中files param的JS等价物是什么?

0sgqnhkj  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(105)

我有一个通过post端点上传文件的API,这是我在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)

我需要一种方法来使用JS中的axios来发出完全相同的请求。
我已尝试以下操作,但未成功:
1.表格数据包
1.表格数据节点程序包

  1. axios 形式数据包
    使用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端点都被命中,但是带有一个空的request.form对象(API是用Python中的Flask构建的)
尝试发送此请求时我做错了什么?
另外,在我的package.json文件中,这被设置为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);
        }
      });
}
yduiuuwa

yduiuuwa1#

第一个月
readFileSync的返回值是一个字符串。
axios-form-data仅在检测到 * 文件 * 时才起作用。
按照the documentation使用createReadStream(也来自fs模块)。

相关问题