1. ホーム
  2. node.js

[解決済み] Node.jsでPOSTリクエストを使ってファイルをアップロードする

2023-06-05 16:38:31

質問

Node.jsでPOSTリクエストを使用してファイルをアップロードするのに問題があります。私は使用しなければならない request モジュールを使用しなければなりません(外部 npm はありません)。サーバーは、マルチパートリクエストにする必要があります。 file フィールドを含むマルチパートリクエストである必要があります。簡単そうに見えることでも、外部モジュールを使用せずにNode.jsで行うのはかなり難しいのです。

私は この例では を使ってみましたが、うまくいきませんでした。

request.post({
  uri: url,
  method: 'POST',
  multipart: [{
    body: '<FILE_DATA>'
  }]
}, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});

どのように解決するのですか?

すでに使っているようですが request モジュール .

この場合、投稿する必要があるのは multipart/form-data は、その form 機能 :

var req = request.post(url, function (err, resp, body) {
  if (err) {
    console.log('Error!');
  } else {
    console.log('URL: ' + body);
  }
});
var form = req.form();
form.append('file', '<FILE_DATA>', {
  filename: 'myfile.txt',
  contentType: 'text/plain'
});

を使用しますが、ファイルシステムから既存のファイルを投稿したい場合は、単に読み取り可能なストリームとして渡すことができます。

form.append('file', fs.createReadStream(filepath));

request は、それだけで関連する全てのメタデータを抽出します。

の投稿の詳細については multipart/form-data を参照してください。 node-form-data モジュール で内部的に使用されている request .