gpt4 book ai didi

ruby-on-rails - 使用 RubyOnRails 上传 HTML5 FormData 文件

转载 作者:太空狗 更新时间:2023-10-29 13:59:15 25 4
gpt4 key购买 nike

我使用此脚本在 Rails 3.2.8 应用程序中使用 HTML5 FormData 上传文件(一个接一个)。

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

我该如何解决这个错误?

最佳答案

你见过这个问题吗? Sending multipart/formdata with jQuery.ajax

看起来您可能遇到了添加内容类型 header 的 jQuery,这会导致边界字符串丢失。从上面的链接问题:

It’s imperative that you set the contentType option to false, forcing jQuery not to add a Content-Type header for you, otherwise, the boundary string will be missing from it. Also, you must leave the processData flag set to false, otherwise, jQuery will try to convert your FormData into a string, which will fail.

基于此,试一试:

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

我自己还没有尝试过,但我怀疑这可能是您正在寻找的机器人:)

关于ruby-on-rails - 使用 RubyOnRails 上传 HTML5 FormData 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12431760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com