2016-11-17 17 views
1

NodeJS express(MVC)を使用していますが、画像をアップロードしようとしています。私はアップロードフォルダに画像を保存しようとしていますが、何も表示されません。私がconsole.log(req.files)を実行すると、次のようなメッセージが表示されます(req.bufferは長い一連の2桁の数字と文字を出力します)。フォルダにイメージを保存するにはどうしたらいいですか?multerを使用したファイルのアップロードが完全に機能していません(nodejs)

[{フィールド名: 'ファイル'、 ORIGINALNAME: 'thumbnail.jpg' エンコーディング: '7ビット' MIMEタイプ: '画像/ JPEG' バッファ: サイズ:1347}]

HTML:

  <form action="/bars/upload" method = 'post' enctype="multipart/form-data"> 
       <label for='file'>Upload Image</label> 
       <input type="file" name="file" accept="image/*"/> 
       <input type="submit" name='submit' value="submit"/> 

      </form> 

NODE JS

var multer = require( 'multer'); var upload = multer({dest: '../ public/uploads /'});

router.post( '/バー/アップロード'、関数(REQ、RES、次){
にconsole.log(req.files);
res.send(req.files); })。

答えて

1

私は同じ問題がありました。私はPostmanを使って自分のノードアプリケーションに問い合わせをしました。問題は、httpヘッダーのContent-Type(urlencodedフォームとして設定されていた)を削除したときに解決されました。

+0

これは命を救いました! –

2

multerは基本的にファイルをアップロードしたり、後でハンドラで使用できる形式に変換するミドルウェアです。これが機能しない場合、あなたは通常、私を助け、コマンドラインを使用してデバッグでき

<form action="/bars/upload" method = 'post' enctype="multipart/form-data"> 
    <label for='file'>Upload Image</label> 
    <input type="file" name="someFile" accept="image/*"/> 
    <input type="hidden" name="someParam" value="someValue"/> 
    <input type="submit" name='submit' value="submit"/> 
</form> 

upload.html

var multer = require('multer'); 
var upload = multer({ dest:'../public/uploads/' }); 

router.post('/bars/upload', upload.single('someFile') ,function (req, res, next) { 

    // if you're here, the file should have already been uploaded 

    console.log(req.files); 
    console.log(req.body);// {"someParam": "someValue"} 
    res.send(req.files); 
}); 

:だから、examplesから、あなたはあなたのケースでこれを行うことができますサーバーまたはクライアントに障害があるかどうかを判断します。

curl --form "[email protected]/path/to/file" -X POST http://localhost:3000/bars/upload 

-Iオプションを指定すると冗長な応答が表示されます。

関連する問題