Загрузка файла с помощью загрузки файла blueimp jQuery не работает в IE9

создали функцию загрузки с помощью jQuery-file-upload, моя загрузка работает в Firefox, Chrome и IE версии более 9.

Я попытался принудительно использовать транспорт iframe, рекомендованный документом плагина jQuery-fileupload. Fileupload выполняет свои задачи, но отправляет пустой объект. Итак, symfony выдает ошибку о файле. Мой процесс загрузки работает следующим образом: Backbone.js + require.js -> symfony -> Rackspace

                $(selector).fileupload({
                dataType: 'json',
                autoUpload: true,
                url: 'http://' + IM('site').get('domain') + '/' + window.PadawanSite.envPath + '/upload/adpost/img',
                forceIframeTransport: true,

                add: function (e, data) {
                    var id = e.target.id.substring(e.target.id.length - 2),
                        jqXHR = data.submit()
                            .success(function (result, textStatus, jqXHR) {
                                images.push({
                                    id: id,
                                    original: result.publicUrl.original,
                                    large   : result.publicUrl.large,
                                    medium  : result.publicUrl.medium,
                                    small   : result.publicUrl.small
                                });
                            })
                            .error(function (jqXHR, textStatus, errorThrown) {
                                $('#picture_callback_' + id).removeClass('glyph icon-spinner2 icon-refresh-animate').addClass('glyph-05 icon-x-empty');
                            })
                            .complete(function (result, textStatus, jqXHR) {
                                if (textStatus === "success") {
                                    var ad = IM('ad').toJSON();
                                    ad.images = images;
                                    IM('ad').clear().set(ad);
                                    IM('ad').save(ad);
                                    if (IM('ad').toJSON()) {
                                        $('#adpost_picture_img_' + id).attr("src", result.responseJSON.publicUrl.small);
                                        $('#picture_callback_' + id).removeClass('glyph icon-spinner2 icon-camera icon-x-empty icon-refresh-animate').addClass('glyph-05 icon-v');
                                        $('#adpost_picture_visualize').removeAttr('disabled');
                                    }
                                }
                            });
                    $('#adpost_picture_visualize').attr('disabled', 'disabled');
                    $('#picture_callback_' + id).removeClass('glyph-05 icon-camera icon-x-empty').addClass('glyph icon-spinner2');
                    $('#picture_callback_' + id).addClass('icon-refresh-animate');
                    $('#adpost_picture_name_' + id).empty();
                    $('#adpost_picture_name_' + id).append(data.files[0].name);
                }
            });

Заголовки моего запроса, отправленные в symfony. Но вы можете видеть длину содержимого, равную 0. Так что это проблема, но зачем он это делает?

X-Requested-With: XMLHttpRequest
Host: sjus.local
Request: POST /app_dev.php/upload/adpost/img HTTP/1.1
Cache-Control no-cache
User-Agent Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Connection Keep-Alive
Referer http://sjus.local/app_dev.php#postad/picture
Accept-Encoding gzip, deflate
Accept-Language en-us
Content-Length 0
Accept */*

person DamienL    schedule 02.10.2014    source источник


Ответы (1)


Это известное ограничение для IE8/9, когда вы выполняете междоменную загрузку файлов как сайт документации плагина говорит.

Однажды я столкнулся с этой проблемой, в частности, я получил ошибку «Отказано в доступе», когда плагин пытался получить ответ от iframe, потому что в моем случае сайт был поддоменом в том же домене, что и API. Таким образом, я смог использовать опцию «initialIframeSrc», чтобы указать document.domain, который будет использоваться в iframe (мне повезло). Я сделал что-то вроде этого:

dataType: 'text',
forceIframeTransport: true,
initialIframeSrc: "javascript:document.write('<script>document.domain=\"mydomain.com\";</script>')",

Таким образом, плагин смог получить ответ из содержимого iframe.

Надеюсь это поможет.

person elvin    schedule 05.10.2014