Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jQuery File upload + html5


Автор: Platon 31.10.2013, 19:19
Здравствуйте, уважаемые.

Есть статья http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery

Очень интересная, полезная. В ней топовый ответ понравился более, чем 500 разработчикам. Я захотел его повторить, но кажется, что-то пошло не так =(

По виду, мой код фактически не отличается от приведённого:

Код

<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<script type="text/javascript" src="jquery.js"></script>
<body>
<form enctype="multipart/form-data">
    <input name="file" type="file" />
    <input type="button" value="Upload" />
</form>
<progress></progress>
<script type="text/javascript">
$(':file').change(function(){
    var file = this.files[0];
    name = file.name;
    size = file.size;
    type = file.type;
    //Your validation
});

$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'upload.php',  //Server script to process data
        type: 'POST',
        xhr: function() {  // Custom XMLHttpRequest
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // Check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // For handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        //beforeSend: beforeSendHandler,
        success: function (response) {
            alert(response);
        },
        error: function() {
            alert('error');
        },
        // Form data
        data: formData,
        //Options to tell jQuery not to process data or worry about content-type.
        cache: false,
        contentType: false,
        processData: false
    });
});

function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}
</script>

</body>
</html>


Однако код на сервере 

Код

<?php
var_dump($_FILES);


выдаёт array(), т.е. пусто. нет передачи данных через jquery.

Что я упустил?

PS. Браузеры Opera 12 и Chrome Версия 30.0.1599.101

Автор: Platon 31.10.2013, 22:02
Всем мир!

Оказалось, что версия jQuery 1.4 такое делать не умеет. Обновился до 1.10 - всё стало как надо.

Это великолепнейшая вещь без дополнительных плагинов. Рекомендую всем.

Есть неработающие версии - IE 7-9. Но кому сейчас до них есть дело? smile

Автор: Kuznec 21.4.2015, 12:53
Как передать данные о превью картинке перед загрузкой?

Пытаюсь сделать так:

Код

tpl.find('.wind').css('background-image', 'url(' + data.files[0].name + ')');


Имя он пишет, но не показывает. Может есть стандартная функция в jQuery File Uploader? В общем не пойму, какая именно или как это определяется.

Автор: sQu1rr 21.4.2015, 18:02
Вы некропостер однако...
И по правилам один вопрос - одна тема.
И ответ тут
http://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded

Автор: Kuznec 22.4.2015, 09:23
Цитата(sQu1rr @ 21.4.2015,  18:02)
Вы некропостер однако...
И по правилам один вопрос - одна тема.
И ответ тут
http://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded

Интересовала связка jQuery File Upload. В поисках пришёл к применению функции FileReader. Не нравится как это я сделал, но работает. Правда загружаются на "сервер" (xampp) обычно быстрее, чем появляется превью. С загрузкой в Интернет ещё не пробовал. В общем, тормозная функция, но выбора, видимо, нет.

P.S. Смысла не вижу создавать новую тему, когда название этой темы в тему smile

Автор: sQu1rr 23.4.2015, 15:57
Цитата(Kuznec @  22.4.2015,  06:23 Найти цитируемый пост)
Правда загружаются на "сервер" (xampp) обычно быстрее, чем появляется превью. С загрузкой в Интернет ещё не пробовал. В общем, тормозная функция, но выбора, видимо, нет.

Разумеется, скопировать файл на компе быстрее чем отправить его в интернет. Обычно. Если только канал не гигабитный вы не в серверной комнате, подключены по локалке. Вообщем, если фотка > мб, и человек не с сшп, а с мухосранска, то функция будет работать быстрее, чем загрузка. И я предпологаю (не пробовал), что скорость функции от браузера зависит

Цитата(Kuznec @  22.4.2015,  06:23 Найти цитируемый пост)
P.S. Смысла не вижу создавать новую тему, когда название этой темы в тему

Правла форума. Вопрос был не продолжение темы и воскрешать ее не было смысла, даже если чем-то ваш вопрос и связан

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)