HTML5 FORMDATA文件上传与RubyOnRails(HTML5 FormData file

2019-07-31 14:38发布

我使用这个脚本上传与HTML5 FORMDATA文件(逐个)中的Rails 3.2.8应用程序。

http://jsfiddle.net/RamPr/

$('.uploader input:file').on('change', function() {
  $this = $(this);

  $('.alert').remove();

  $.each($this[0].files, function(key, file) {
    $('.files').append('<li>' + file.name + '</li>');

    data = new FormData();
    data.append(file.name, file);

    $.ajax({
      url: $('.uploader').attr('action'),
      contentType: 'multipart/form-data',
      type: 'POST',
      dataType: 'json',
      data: data,
      processData: false
    });
  });
});

但是,当我上传文件,我得到了控制台此错误:

webrick/server.rb:191:in `block in start_thread' ERROR ArgumentError: invalid %-encoding ("filename.jpeg" Content-Type: image/jpeg

我该如何解决这个问题?

Answer 1:

你见过这个问题? 发送多/ FORMDATA与jQuery.ajax

它看起来像你可能会运行到jQuery的添加内容类型标头,这会导致丢失的边界线。 从上面的链接问题:

这是你必须设定contentType选项false ,迫使jQuery的不添加Content-Type头的你,否则,边界线将它丢失。 此外,你必须离开processData标志设置为false ,否则,jQuery将尝试将您FORMDATA转换为字符串,这将失败。

在此基础上,试试这个:

$.ajax({
  url: $('.uploader').attr('action'),
  contentType: false,
  cache: false,
  processData: false,
  type: 'POST',
  dataType: 'json',
  data: data
});

我还没有尝试过这个自己,但我怀疑这可能是你要找的机器人:)



文章来源: HTML5 FormData file upload with RubyOnRails