2016-06-16 10 views
0

私は、ノードアプリケーションにファイルをアップロードし、cdnサーバにftpするファイルをアップロードする、anglejsアプリケーションでファイルアップロード機能を構築しています。今、私はちょうどhteファイルを取得しているつもりです。私はmulterを使用しようとしましたが、保存がFTPにリダイレクトされないようにする方法がわかりません。

とにかく、これは私のコードwithooutのmulter

<input type="file" multiple file-model="fileRepo"/> 


myApp.directive('fileModel', ['$parse', function ($parse) { 
     return { 
      restrict: 'A', 
      link: function(scope, element, attrs) { 
       element.bind('change', function(){ 
       $parse(attrs.fileModel).assign(scope,element[0].files) 
       scope.$apply(); 
       }); 
      } 
     }; 
    }]); 

/// ///コントローラ

$scope.saveFile = function(){ 
     var fd=new FormData(); 
     angular.forEach($scope.fileRepo,function(file){ 
      fd.append('file',file); 
     }); 

     $scope.newFile.files = fd; 

     FileService.uploadFile($scope.newFile) 
..... 

/// /// fileservice

uploadFile: function(file){ 
      var deferred = $q.defer(); 

var uploadUrl = '/api/file/ftp/new'; 
       var requestFileUpload = { 
         method: 'POST', 
         url: uploadUrl, 
         data: file.files 
        } 
       var requestFileUploadConfig = { 
        transformRequest: angular.identity, 
        headers: { 'Content-Type': undefined } 
       } 
       $http.post(uploadUrl, file.files, requestFileUploadConfig) 
        .then(function(){ 
        }) 

///ですノード部///

router.post('/ftp/new', function(req, res) { 
     console.log('file is ' + JSON.stringify(req.body)); 
    }); 
+0

あなたは、HTMLパーサを使用していますか?バスボーイ?参照してください。 –

答えて

1

HTMLパーサーを使用すると、リクエストを読むだけでファイルをキャッチできなくなります。私は、あなたがあなたのファイルを読み取ることができるとしている使用busboyconnect-busboyをお勧めします

、この小さな例:

req.pipe(req.busboy); 
req.busboy.on('file',function(fieldname, file, filename, encoding, contentType){ 
    // get data 
    file.on('data',function(data){ 

    }).on('end', function(){ 

    }); 
}); 


req.busboy.on('field',function(fieldname, val){ 
    req.body[fieldname] = val; 
}); 

req.busboy.on('finish', function() { 
    // save file here 
}); 
+0

私はパーサなしでファイルを読むことができると思った。あなたはマルターをお勧めしますか?もしそうでなければ、バスボーイはファイルをサーバに直接転送してftpする方法を持っていますか? – gdubs

+0

私はmulterを使用していませんが、それを確認してください、私の経験は私の経験に基づいていますが、あなたが一番好きなものを使うことができます、しかし、私はftpに直接アップロードすることはできません。あなたの質問に掲示された問題を解決するために解析が行われます。 –

+0

あなたは正しいです。 btw、busboyは自動的にファイルを保存先フォルダに保存するだけですか?それが事実なら私はそれをつかむので、私はそれをftpすることができますか?あなたが知っていれば。 – gdubs

関連する問題