$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"}
私がする必要があることに
マークダウン テキスト (ブロブを使用すると仮定) を「ファイル」としてアップロードする必要があります。 $resource と $http の両方をさまざまな構成で試しましたが、うまくいきませんでした。
私の100回目のAngular試行後の典型的な惨めなログ応答:
{"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')
}
}
});
});
これは実際に私が試したことのほんの一例です。私はこれを数時間叩いてきましたが、あまり運がなかったので、おそらくここの誰かがマルチパートフォームデータについて詳しく知っていて、ブロブと角度の落とし穴に光を当てることができます.