JQuery File Uploader IE9 Не публикует никаких параметров при загрузке

Я использую плагин для загрузки файлов jQuery вместе с rails 3. Плагин здесь:

https://github.com/blueimp/jQuery-File-Upload

Я использую плагин, чтобы позволить пользователю загружать фотографию профиля. Решение до сих пор работает с Chrome, Safari и Firefox. Однако на IE это не удается. Когда вы выбираете файл в IE, плагин отправляет на сервер, но нет параметров, это пустое сообщение.

Пример поста в chrome:

Started PUT "/api/1/settings/ajax_photo_upload" for 10.0.1.3 at 2012-10-02 15:39:20 -0700
Processing by ApiV1::SettingsController#ajax_photo_upload as JS
  Parameters: {"photo"=>#<ActionDispatch::Http::UploadedFile:0x007f9e4bac2e48 @original_filename="xxxxx.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[photo]\"; filename=\"xxxxx.jpeg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/3x/k1yb0r4s07q1jm82kq93ch180000gn/T/RackMultipart20121002-3633-sxsbtu>>}, "update_type"=>"general"}

Однако в IE9 он ничего не передает:

Started PUT "/api/1/settings/ajax_photo_upload" for 10.0.1.10 at 2012-10-02 15:39:31 -0700
Processing by ApiV1::SettingsController#ajax_photo_upload as JS

Вот моя реализация:

$('input[type="file"]').fileupload({
    url : '/api/1/settings/ajax_photo_upload',
    formData : [{
        name : 'authenticity_token',
        value : $('meta[name="csrf-token"]').attr('content')
    }],
    type : 'PUT',
    dataType: 'json',
    add : function (e, data) {
            data.submit();
    }
});

HTML

<input name="user[photo]" type="file" accept="image/*" >

Есть идеи, почему IE будет делать это? Спасибо

3 ответа

Вы используете основной плагин? У меня была такая же проблема, и я боролся с ней один день, чтобы понять, что я не включил плагин jquery.iframe-transport.js:

<script src="js/jquery.iframe-transport.js"></script>

Смотрите документацию здесь.

Ой! и спасибо за ваш фрагмент о включении пары ключ-значение "authenticity_token" в качестве "formData" - это помогло мне избавиться от предупреждения rails 3 "ПРЕДУПРЕЖДЕНИЕ: не удается проверить подлинность токена CSRF"

    $("#txt1").fileupload({
        replaceFileInput: false,
        dataType: "json",        
        datatype:"json",
        url: "<%=Page.ResolveUrl("~/WebService/AddAttachment.ashx")%>",
        done: function (e, data) {
            $.each(data.result, function (index, value) {
         //You get the response data in here from your web service
            })
            $("#txt1").val("");
        }`enter code here`
    });

Это проверено и отлично работает в IE8 и IE9 + выше. Убедитесь, что вы используете правильный dataType:"json" (или datatype:"json"), а также убедитесь, что ваш ответ метода веб-службы правильно обновлен до data.result при отладке и проверке. Спасибо

В основном речь идет о поддержке тегов данных html 5. IE9 имеет серьезные проблемы с этим. Например, когда вы загружаете изображение, в chrome он отправляет данные:blob и дает вам предварительный просмотр перед тем, как вы фактически загрузите изображение. В IE вы не можете. Посмотрите экран вложений почты Gmail в IE9, вы увидите разницу. Если это крупномасштабный проект, я советую вам использовать Flash в качестве загрузчика изображений.

Другие вопросы по тегам