2017-07-16 10 views
0

これはファイルをアップロードするための簡単なコードです。私はnodejsをサーバー上のバスボーイと共に使用し、クライアント上の反応でアキシャスを使用します。コールバックが呼び出されることはありませんファイルをaxiosからbusboyにアップロードしないでください

app.post('/upload', function (req, res) { 
    console.log("upload"); // we do get here 
    if (req.busboy) { 
     // and here 
     req.busboy.on("file", function (fieldName, fileStream, fileName, encoding, mimeType) { 
      console.log("on file"); // but never get here 
     }); 
     return req.pipe(req.busboy); 
    } 
}); 

しかし、(「ファイル」)上:私は、ファイルを選択し、フォームを送信し、私は/アップロードがサーバー側で処理されている参照してください。これは私のクライアントコードです: クライアントコード:

<input type="file" onChange={this.getFile} /> 

getFile(e){ 
    e.preventDefault(); 
    let reader = new FileReader(); 
    let file = e.target.files[0]; 
    reader.onloadend = (theFile) => { 
     const data = new FormData(); 
     data.append('file', file); 
     axios.post("/upload",file); 
    }; 
    reader.readAsDataURL(file); 
} 

問題になる可能性がありますか?

更新:req.bodyは未定義です。私はこれらの行を追加しました:

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({extended: false, limit: '50mb'})); 

req.bodyがnullでなく、ファイルのバッファが含まれているが、まだ発売されていません(「ファイル」)に。

+0

はreq.bodyを点検し、あなたがそれであなたのファイルバッファを見つけることができるかどうか確認してください。 – mrdotb

+0

@mrdotb、req.body is undefined ... –

+1

req.bodyが定義されていない場合は、クライアント側の問題です。あなたはおそらく考え出した。 – mrdotb

答えて

0

バグはここにあった:

reader.onloadend = (theFile) => { 
     const data = new FormData(); 
     data.append('file', file); 
     axios.post("/upload",data); // <-- I had wrong second argument here! 
    }; 
関連する問題