2017-02-07 6 views
0

をangularjsとき、私は、元のファイルにテキストボックスからはmulterを使用して、テキストボックスと、元のファイル名から名前を追加することで、新しい名前を作成し、その

script.js

を名前を追加して名前を作成したい二回アップロードしました
angular.module('signin').service('fileUpload', ['$http', function ($http) 
{ 
    this.uploadFileToUrl = function(file, uploadUrl, name){ 
     var fd = new FormData(); 
     fd.append('file', file); 
     fd.append('name', name); 

     $http.post(uploadUrl, fd, { 
      transformRequest: angular.identity, 
      headers: {'Content-Type': undefined} 
     }) 

     .success(function(){ 
      console.log("uploaded"); 
     }) 

     .error(function(){ 
      console.log("fail to upload"); 
     }); 
}}]); 

fileUpload.uploadFileToUrl(file, uploadUrl, $scope.id); 

とapp.jsで

var storage = multer.diskStorage({ 
destination: './upload/', 
filename: function (req, file, cb) { 
    cb(null, name + "_"+file.originalname) 
    } 
}) 
var upload = multer({ storage: storage }); 

app.post('/move', upload.single('file'), function(req,res,next){ 
    name = req.body.name; 
    console.log('Uploade Successful ', req.file, req.body); 
}); 

問題は「name」の変数からの出力は、第1の時間に常に未定義であるが、約2秒 - 1分、コンソールUPDAログを出力して、 'name'変数を使ってアップロードしたファイルを再度入力すると、入力から値が得られることを示します。そのため、不要なファイルを作成しています(ファイルを2回保存します。予期しないファイル(元の名前の前にundefieneというファイルがあります)と必要なファイルです)。

enter image description here

答えて

0

私は

//ストレージ

var location_hotels = multer({ dest: './uploads/images' }); 
var cpUpload = location_hotels.fields([{ name: 'title', maxCount: 1 }, 

{名を作成し、自分の作業コード・セグメントから、もう一度設定を確認してください、なぜなら私の構成の問題と同じ問題を抱えて: 'text'、maxCount:1}、{name: 'myfile'、maxCount:8}]);

router.post('/upload_test', cpUpload, function (req, res, next) { 
    console.log(req.files); // return if files exist 
     console.log(req.files); // return if field exist 
}); 

//フォームデータなどのデータをアップロードし、私の角度サービスがあり、

angular.module('testServices', []) 

.service('MyService', function($http) { 
this.uploadFileToUrl = function(file, title, text, uploadUrl){ 
    var payload = new FormData(); 

    payload.append("title", title); 
    payload.append('text', text); 

    for(var x = 0; x<file.length; x++) { 
     payload.append('myfile', file[x]); 
    } 

    console.log(payload); 

    return $http({ 
     url: uploadUrl, 
     method: 'POST', 
     data: payload, 
     //assign content-type as undefined, the browser 
     //will assign the correct boundary for us 
     headers: { 'Content-Type': undefined}, 
     //prevents serializing payload. don't do it. 
     transformRequest: angular.identity 
    }); 
} 
}); 

私はゲストそれはあなたを助けるかもしれません。

//あるいは、以下のようにコードを変更してみてください、

router.post('/upload', function(req, res) { // get your post request 
    profilePictures(req, res, function(err) { // do multer tasks 
     if (err) {} 
     } 
    }); 
}); 
+0

してくださいあなたはニーズが変化して見ることができるオリジナルポスターのコード/設定で特定の何かありましたか?あなたが特定した問題について具体的に考えることができれば、将来的に誰かを助けるかもしれません。あなたの設定でどのような具体的な変更をしましたか(たとえば)。 – wally

関連する問題