12

node.js と手ごわいモジュールを使用してファイルのアップロードに成功しましたが、ディスクに保存されたファイルはある種の不適切な形式 (不適切なエンコーディング) です。たとえば、画像をアップロードすると表示できません。 txt ファイル gedit は、次のメッセージを提供します。

コードは次のとおりです。

form.encoding = 'utf-8';
form.parse(req, function(err, fields, files) {
    fs.writeFile('test.js', files.upload,'utf8', function (err) {
          if (err) throw err;
          console.log('It\'s saved!');
    });
});
4

2 に答える 2

20

問題は、files.upload がファイルのコンテンツではなく、node-formidable の File クラスのインスタンスであることです。

見る:

https://github.com/felixge/node-formidable/blob/master/lib/file.js

ファイルをディスクに再度書き込もうとする代わりに、次のようにアップロードされたファイルへのパスにアクセスし、 fs.rename() を使用して必要な場所に移動できます。

fs.rename(files.upload.path, 'yournewfilename', function (err) { throw err; });
于 2011-06-15T23:24:00.887 に答える
4

フォームは enctype="multipart/form-data" に設定されていますか?

私は Express でのみ formidable を使用しました - Express の例は問題なく動作します:

https://github.com/visionmedia/express/tree/master/examples/multipart

于 2011-04-04T20:17:37.463 に答える