2017-01-12 15 views
3

私は現在Node.jsミドルウェアで作業しており、フォームデータを使用してAPIにファイルを送信する必要があります。Node.jsのbase64文字列からformdataでファイルを送信するにはどうすればよいですか?

fsを使用してローカルストレージ上のファイルを使用してReadStreamを作成し、それをフォームデータに格納すると、これを実行できました。

私は自分のデータを送信するための要求の約束を使用します。

var formData = { 
    'file': fs.createReadStream('myfile.jpg') 
} 

var options = { 
    method: method, 
    uri: url, 
    formData: formData 
} 

return rp(options).then(response => response) 

は今、私は完全にはフードの下で何が起こっているのか理解していません。

"myfile.jpg"を送信したのと同じように、私はbase64文字列内にあるファイルのみを送信する必要があり、APIはファイルを待っています。

私は、base64文字列から構築されたバッファに送信しようとしました:

var buffer = Buffer.from(base64string, 'base64') 

var formData = { 
    'file': buffer 
} 

をしかし、それは動作しませんでした。 私は最終的に私のバッファからバイナリファイルを作成し、そこからストリームを作成するためにfsを使うことができましたが、これを実現するより良い方法があるといいですね。

また、わかりませんが、私が理解できないことに取り組んでいるわけではありません。ファイルストリームがどのようにformdatasと連携するかについての情報があれば、取りに行きます!

答えて

0

これはあなたの設定ではうまくいくのかどうかはわかりませんが、データからバッファを作成してから「パス」プロパティを追加しています。このプロパティを使用すると、リクエストやその他のライブラリでデータの種類を推測できます。

アップロードが完全に機能しました。これはあなたのhttp層に依存します(私は推測します)。

関連する問題