2016-09-22 5 views
0

ですので、Excelファイルをアップロードしてデータベースに保存しています。これはフォームです。req.bodyは角度ファイルアップロードでは空です。ノードjs

<form method="post" enctype="multipart/form-data"> 

    <label class="uk-form-file md-btn md-btn-primary" for="user_upload">Upload File</label> 
     <input 
      style="display:none;" 
      type="file" 
      ngf-select 
      ng-model="user_datasource" 
      name="userdatasource_upload" 
      id="userdatasource_upload" 
      accept=".xlsx,.xls,.csv" 
      ngf-max-size="20MB" 
      fd-input 
      ng-change="upload"/> 
</form> 

これは私のアップロード

$scope.upload = function() { 
    Upload.upload({ 
     url: '/api/sr/user_upload', 
     data: { 
     username: 'test', 
     file: file_upload 
     } 
    }).then(function(response) { 
    console.log(response); 
    });  
} 

を処理し、あなたが見ることができるように、これは私のノード

app.use(function(req, res, next) { 
    res.setHeader("Access-Control-Allow-Methods", "POST, PUT, OPTIONS, DELETE, GET"); 
    res.header("Access-Control-Allow-Origin", "http://127.0.0.1:3000"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.post('/api/sr/user_upload',function(req, res) { 
    console.log('============================================,'); 
    console.log(req); 
}); 

である私のコントローラです。私はすべてを含んでいます。 body-parser,setHeaderなどであるが、運がない。 req.bodyは空です。ファイルをアップロードして、usernameでデータベースに保存します。ユーザー名を取得した後、multerを使用して私を助けてください!ありがとう!

+0

'ボディparser'がマルチパートボディを処理しないため、これは動作します。この

upload(req, res, function(err) { if (err) { console.log(err); return res.end('Error'); } else { console.log(req.body); req.files.forEach(function(item) { console.log(item); // move your file to destination }); res.end('File uploaded to Destination'); } }); 

希望のようupload機能であなたの残りのデータを取得する必要があります。 – abdulbarik

+0

そのためには、['multer'](https://github.com/expressjs/multer)を使うことができます。 – robertklep

+0

はいmulterは動作していますが、私はreq.bodyのユーザー名を見つけることができません –

答えて

0

あなたは、私がこの回答

multerを書いています。この基づいてmulterを使用しているように最初にファイルを保存し、その後reqに、フォームの残りの部分を書き込み - 隠しフィールドを言うことができます。

だからあなたはあなたが

+0

私はそれに問題はありませんので、私のファイルを保存するマルターコードを持っています。私が持っている唯一の問題は、コントローラーに渡されたデータが表示されないことです。この "req.body.username"のように。私は角度アップロードに既にそれを含めています。 –

+0

あなたは 'upload'コールバック関数の中でそれを得ることができます。私が答えてくれたように – abdulbarik

関連する問題