所以我需要:使用 $http 或 $resource 和 angular.js 将文本 blob 作为文件上传 - 模仿 curl 样式的多部分/表单上传。
以前有一篇关于这个问题的帖子我将尝试更明确地说明这个问题,希望有人能确定我可能误入歧途的地方。
这是我知道可用于此服务的 curl 命令的示例:
curl \
http://c.docverter.com/convert \
-F from=markdown \
-F to=pdf \
-F input_files[]=@<(echo hello) #or @example.md for a file
来自 sinatra 的成功日志响应示例
{"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"}
关于我需要做的事情
我需要将 markdown 文本(我假设使用 blob)作为“文件”上传 - 我已经尝试了 $resource 和 $http 有十几种不同的配置,但没有运气。
在我的第 100 次角度尝试之后,典型的悲惨日志响应:
{"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')
}
}
});
});
这实际上只是我尝试过的一个例子。我已经为此苦苦挣扎了几个小时,但运气不佳,也许这里的某个人对多部分表单数据了解更多,并且可以阐明斑点和角度的陷阱。