2017-10-06 167 views
1

我正在創建一個任務來發送PUT請求,並在節點中使用axios上傳.pot文件。什麼是cURL的形式axios或ajax等效?

我可以運行

curl -i -u api:<api-key> -F [email protected]/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:<api-key>部分的函數,它返回{'Authorization': 'Basic <api-key>'}。我已經檢查過該功能是否有效,因爲我能夠成功執行獲取請求。

那麼在ajax或axios中相當於-F [email protected]/file.pot

回答

0

嘗試以下溶液:

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

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

另外檢查是否該內容 - 類型報頭被設置爲多部分/形式數據或沒有。

+0

內容類型正在設置,但我得到一個411狀態響應,說長度是必需的? – dylanpark

+0

嘗試類似這樣來擺脫內容長度問題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 });' 繼以上提到的問題後[https: //github.com/request/request/issues/316) –

相關問題