2016-04-26 27 views
0

所以我需要:使用$ http或$ resource上傳文本blob作爲文件,使用angular.js - 模仿捲曲式多部分/表單上傳。

有一個previous post on this problem我打算試着更清楚地解釋這個問題,希望有人能夠確定我可能會誤入歧途的地方。

這裏是curl命令,我知道的作品與此服務的例子:

curl \ 
http://c.docverter.com/convert \ 
-F from=markdown \ 
-F to=pdf \ 
-F input_files[][email protected]<(echo hello) #or @example.md for a file 

previous post on this problem

如成功的日誌從西納特拉

{"input_files"=>[{:filename=>"api.md", :type=>"text/markdown", :name=>"input_files[]", :tempfile=>#<Tempfile:/tmp/RackMultipart20160426-3-5tb8po>, :head=>"Content-Disposition: form-data; name=\"input_files[]\"; filename=\"api.md\"\r\nContent-Type: text/markdown\r\n"}], "from"=>"markdown", "to"=>"pdf"} 

反應來說明是什麼我需要做

我需要上傳減價文本(我假設使用blob)作爲「文件」 - 我已經嘗試了$資源和$ http十幾種不同的配置,沒有運氣。

我百角度嘗試之後,一個典型的悲慘測井響應:

{"from"=>"markdown", "input_files"=>["{}"], "to"=>"pdf"} 

代碼示例:

angular.module('app') 
    .factory('convert', function ($resource) { 
    return $resource('http://c.docverter.com/convert', null, { 
    pdf: { 
     method: 'POST', 
     headers: { 'Content-Type': 'multipart/form-data' }, 
     params: { 
     from: 'markdown', 
     to: 'pdf', 
     'input_files[]': new Blob(['##title'], 'text/markdown') 
     } 
    } 
    }); 
}); 

這是真的只有一個的就是我已經試過例子。我一直在琢磨幾個小時,並沒有太多的運氣,所以也許這裏有人知道更多關於多部分形式的數據,並可以揭示斑點和角度的缺陷。

回答

0

好一個良好的睡眠,並在這一個小時,我有一個工作的上傳和下載:

var fd = new FormData(); 
var blob = new Blob([$scope.markdown], {type: 'text/markdown'}); 
var file = new File([blob], "abc.md"); 
fd.append('input_files[]', file); 
fd.append('from', 'markdown'); 
fd.append('to', 'pdf'); 

$http.post('https://mydocverterserver.com/convert', fd, { 
    transformRequest: angular.identity, 
    headers: {'Content-Type': undefined}, 
    responseType: 'arraybuffer' 
}) 
.success(function(response){ 
    var b = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); 
    FileSaver.saveAs(b, 'abc.docx'); 
}) 
.error(function(res){ 
    console.log(res); 
}); 

還是有點粗 - 我可能會清理乾淨,並將其移動到一個工廠,但有用。

這是一個docx,但它也適用於markdown和pdf。

的FileSaver位來自:angular-file-saver

如果你正在尋找一個docverter具體的解決辦法像我 - 我解釋了服務器端修復here