【问题标题】:What is the axios or ajax equivalent for cURL's --form?cURL 的 --form 的 axios 或 ajax 等价物是什么?
【发布时间】:2018-03-18 17:35:43
【问题描述】:

我正在创建一个任务来发送 PUT 请求并使用节点中的 axios 上传 .pot 文件。

我可以跑

curl -i -u api:<api-key> -F file=@dist/file.pot https://api-link.com/v2/api 

它会正常工作

我已经尝试在节点中这样做

var fd = require('form-data');
var axios = require('axios');
var form = new FormData();
form.append('file', 'dist/file.pot');
var header = { headers: Object.assign({}, apiToken(), form.getHeaders()) };

axios.put('https://api-link.com/v2/api/', form, header)
    .then(function(res) {
        console.log(res);
    })
    .catch(function(err) {
        console.log(err);
    })

这不像 curl 命令那样工作。 apiToken() 是处理 curl 命令的 -u api:&lt;api-key&gt; 部分的函数,它返回 {'Authorization': 'Basic &lt;api-key&gt;'}。我已检查该功能是否有效,因为我能够成功执行获取请求。

那么 ajax 或 axios 中 -F file=@dist/file.pot 的等价物是什么?

【问题讨论】:

    标签: node.js ajax curl httprequest axios


    【解决方案1】:

    尝试以下解决方案:

    var options = { headers: Object.assign({'Content-Type': 'multipart/form-data'}, apiToken(), form.getHeaders()) };

    axios.post('https://api-link.com/v2/api/', formData, options)

    还要检查 content-type 标头是否设置为 multipart/form-data。

    【讨论】:

    • 正在设置内容类型,但我收到 411 状态响应,说需要长度??
    • 尝试这样的事情来摆脱内容长度问题form.getLength(function(err,length){ var r = request.post('http://your-site.com', { headers: { 'content-length': length } }, function(err, res, body){ console.log(body) }); r._form = form });在提到的问题之后here
    猜你喜欢
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多