2016-06-17 13 views
0

こんにちは、私はパッケージを使用できません。ノードサーバーにファイルをアップロードするためのmulter。だから私はフォームのファイルをアップロードするだけで、それは正常に動作する場合、例のオンラインを見つけた。 私は送信中にファイルと一緒に別のフィールド "パスワード"を送信したい、それは仕事にすることはできません。マルチパートフォームデータを使用したファイルアップロードには何が欠けていますか?

私はそこにたくさんのモジュールがあることを知っていますが、今はこの例を動作させたいだけです。

<form style="height: 100%;padding-bottom:63px;"> 
    <p> 
     <input type="file" class="FirmwareFile" 
       name="myUpload" file-model="upload.newFwFile"> 
    </p> 

    <p> 
     <input type="password" name="password" id="password" 
       placeholder="Password" 
       ng-model="upload.controllerPassword" 
       class="formInput"> 
    </p> 
</form> 

httpSvc.uploadToUrl(myFile, myPd, myServerIPAddress, myRoute) {...} 

factory.uploadToUrl = function (fwFile, pd, myServerIp, myRoute) { 
    var fd = new FormData(); 
    //fd.append('passwd', pd); // cannot pass password to server side ? 
    fd.append('file', fwFile); // only this works 

    var deferred = $q.defer(); 
    var completeUrl = ...... 

    $http.post(completeUrl, fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }).success(function (data) { 
     deferred.resolve(data); 
    }).error(function() { 
     deferred.reject(); 
    }); 

    return deferred.promise; 
} 

サーバー側では、パスワード情報をどこから抽出しますか?

var UploadImage = function(req, res, callback){ 
    var destFile = fs.createWriteStream(uploadDest + "mytest"); 
    var fileSize = req.headers['content-length']; 
    req.pipe(destFile); //why not sth. like req.body.file.pipe() ? 
    ... 
}; 

答えて

1

フォームはあなたがnode-formidableを使用したほうが良いでしょう

<form enctype="multipart/form-data" action="..." method="..."> 
    ... 
</form> 

を持っていません。この例はそのままの状態で動作します。また、作成されたangularJS固有のフォームアップロードディレクティブを調べることもできます。車輪を再発明する意味がありません。

乾杯

関連する問題