2016-05-31 9 views
0

リンク:https://github.com/enyo/dropzoneドロップゾーン、角度、MVC5実装

私はangularjsとMVC5を使用して、私のファイルアップロードハンドラとしてドロップゾーンを使用しようとしています。

問題は、IIS5のangeljsサービスからMVC 5のバックエンドに行くためのHttp投稿を取得できないようです。で

私はアクションのような他の値と一緒にファイルを投稿したい、と「値」以下

という名前の文字列値が(サービスでは、angularjs)コードである

sendProductFiles: function (act, file, val) { 
     return $http.post('/attributes/uploads', $.param({ 
      action: act, 
      files: file, 
      values: val 
     }), 
     { 
      transformRequest: angular.identity, 
      headers: { 
       'Content-Type': undefined 
      } 
     }) 
    } 

MVC 5共同で制御(角度)

$scope.intakeUpload = function (files) { 
    var fd = new FormData(); 
    for (var i = 0; i < files.length; i++) 
     fd.append('file', files[i]); 


    AttributionViewService.sendProductFiles("addAttr", fd, $scope.selectedValues).then(function (res) { 

    }, function (err) { 

    }); 
} 
    Dropzone.options.myAwesomeDropzone = { 

    autoProcessQueue: false, 
    uploadMultiple: true, 
    parallelUploads: 100, 
    maxFiles: 100, 

    // Dropzone settings 
    init: function() { 
     var myDropzone = this; 

     this.element.querySelector("button[type=submit]").addEventListener("click", function (e) { 
      e.preventDefault(); 
      e.stopPropagation(); 
      myDropzone.processQueue(); 
     }); 
     this.on("sendingmultiple", function (files) { 
      $scope.intakeUpload(files); 
     }); 
     this.on("addedfile", function (file) { 
      file.previewElement.addEventListener("click", function() { this.removeFile(file); }); 
     }); 
    } 

} 

ntrol現在の状態では

[HttpPost] 
    [Route("attributes/uploads")] 
    public ActionResult AcceptUploads(string action, HttpPostedFile[] files, string values) 
    { 
     if (files.Length <= 0) 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     foreach (var file in files) 
     { 
      System.Diagnostics.Debug.WriteLine(file.FileName); 
     } 
     System.Diagnostics.Debug.WriteLine(values); 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 

私はjqueryのエラーを取得しています jquery.js:8458キャッチされない例外TypeError:不正な呼び出し

編集、また次のことを試してみました:

角度サービス

sendProductFiles: function (act, file, val) { 
     return $http.post('/attributes/uploads', $.param({ 
      action: act, 
      files: file, 
      values: val 
     }), { 
      headers: { 
       'Content-Type': 'multipart/form-data' 
      } 
     }) 

答えて

0

修正しました!

$scope.intakeUpload = function (files) { 
    var fd = new FormData(); 
    for (var i = 0; i < files.length; i++) 
     fd.append('files', files[i]); 

    fd.append("action", "addAttr"); 
    fd.append("values", $scope.selectedValues); 
    AttributionViewService.sendProductFiles(fd).then(function (res) { 

    }, function (err) { 

    }); 
} 


[HttpPost] 
    [Route("attributes/uploads")] 
    public ActionResult AcceptUploads(string action, IEnumerable<HttpPostedFileBase> files, string values) 
    { 
     if (files.Count() <= 0) 
      return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
     foreach (var file in files) 
     { 
      System.Diagnostics.Debug.WriteLine(file.FileName); 
     } 
     System.Diagnostics.Debug.WriteLine(values); 
     return new HttpStatusCodeResult(HttpStatusCode.BadRequest); 
    } 
関連する問題