multipart / form-data,使用ajax上传多个文件

时间:2014-11-13 20:36:19

标签: jquery ruby-on-rails angularjs multipartform-data form-data

尝试创建多个文件+文本块上传。使用RoR,AngularJS,您也会看到一些Bootstrap的东西。一直在搜索SO和谷歌大约一个小时,虽然不可否认它只是在圈子里跑,我觉得应该有一个简单的错误。这是erb:

  <form id="upload-attach-form" class="upload-form" name="upload-attach-form" enctype="multipart/form-data">
    <input type="hidden" name="identifier" ng-value="identifier" />
    <textarea name="text" class="input-xlarge" placeholder="input text..." style="height:6em;width:30em"></textarea>
    <input type="file" name="files" id="uploaded-files" multiple />
  </form>

  <button class="btn btn-success" ng-click="submitForm()">Send</button>

和相关的js:

    $scope.submitForm = function(){
    var upload_data = new FormData($('#upload-attach-form'));
    $.ajax({
        type: "POST",
        url: "/upload_attachment",
        data: upload_data,
        contentType: false,
        processData: false,
        success: function(){
            $("#attachment-ctrl").modal('hide'); //hide popup
        },
        error: function(){
            alert("failure");
        }
    });
}

这会导致出站请求如下:

  Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryoIsRaBissNVsFEdr
  Content-Length: 44
  ...
  Request-Payload: ------WebKitFormBoundaryoIsRaBissNVsFEdr--
      <<nothing here>>
  Response-Headers: ...

这意味着我的形式中没有任何东西。不知道从哪里开始,在这里和那里随意更换东西(有点不舒服,所以可能不会直接思考)。

1 个答案:

答案 0 :(得分:2)

尝试替换:

var upload_data = new FormData($('#upload-attach-form'));

通过这个:

var upload_data = new FormData($('#upload-attach-form')[0]);