Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Перетаскивание файла в браузер

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Ammiak
Отправлено: 01 Декабря, 2014 - 13:27:56
Post Id


Частый гость


Покинул форум
Сообщений всего: 232
Дата рег-ции: Апр. 2011  


Помог: 0 раз(а)




Всем привет
Пытаюсь сделать загрузку файла в форму путем перетаскивания его мышью в браузер как описано здесь: http://habrahabr[dot]ru/post/125424/
У меня такая структура: есть форма
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form method="post" action="" enctype="multipart/form-data">
  3. <input type="file" value="" name="myFile" />
  4. <!--поля формы-->
  5. <input type="submit" value="Отправить">
  6. </form>
  7.  

Далее выполняется этот код
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. // Создаем запрос
  3.         var xhr = new XMLHttpRequest();
  4.         xhr.upload.addEventListener('progress', uploadProgress, false);
  5.         xhr.onreadystatechange = stateChange;
  6.         xhr.open('POST', '/upload.php');
  7.         xhr.setRequestHeader('X-FILE-NAME', file.name);
  8.         xhr.send(file);
  9.     };
  10.    
  11.     // Показываем процент загрузки
  12.     function uploadProgress(event) {
  13.         var percent = parseInt(event.loaded / event.total * 100);
  14.         dropZone.text('Загрузка: ' + percent + '%');
  15.     }
  16.    
  17.     // Пост обрабочик
  18.     function stateChange(event) {
  19.         if (event.target.readyState == 4) {
  20.             if (event.target.status == 200) {
  21.                 dropZone.text('Загрузка успешно завершена!');
  22.             } else {
  23.                 dropZone.text('Произошла ошибка!');
  24.                 dropZone.addClass('error');
  25.             }
  26.         }
  27.     }
  28.  

В указанный div для загрузки пишется надпись Загрузка успешно завершена!, но сам файл из формы не отправляется (массив $_FILES пуст). Подскажите пожалуйста, что делаю не так?
 
 Top
esterio
Отправлено: 01 Декабря, 2014 - 14:06:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
OrmaJever
Отправлено: 01 Декабря, 2014 - 14:29:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Ammiak пишет:
Пытаюсь сделать загрузку файла в форму путем перетаскивания его мышью в браузер как описано здесь: http://habrahabr[dot]ru/post/125424/

недавно тоже делал такую же задачу по этому примеру и он у меня тоже не работал.
Я сделал через FormData

CODE (javascript):
скопировать код в буфер обмена
  1. var formData = new FormData();
  2. var files = event.dataTransfer.files;
  3.  
  4. for(var i = 0; i < files.length; ++i) {
  5.    formData.append('image' + i, files[i]);
  6. }
  7.  
  8. var xhr = new XMLHttpRequest();
  9. xhr.upload.addEventListener('progress', function(event) {
  10.     var percent = parseInt(event.loaded / event.total * 100);
  11.     $('#load_button > a').text('Загрузка: ' + percent + '%');
  12. }, false);
  13.  
  14. xhr.onreadystatechange = function(event) {
  15.   /// ...
  16. };
  17.  
  18. xhr.open('POST', '...');
  19. xhr.send( formData );

(Отредактировано автором: 01 Декабря, 2014 - 14:29:47)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Contr
Отправлено: 08 Декабря, 2014 - 10:18:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




OrmaJever пишет:
недавно тоже делал такую же задачу по этому примеру и он у меня тоже не работал.

Я не пойму, как по этому примеру обработать файл на сервере. $_FILES пустой, $_POST тоже. Сам то файл отправляется. А вот как на сервере его поймать? Не понял
(Добавление)
А, не. сорри. Получилось. Надо делать с formdata и ловить переменной $_FILES
 
 Top
Мелкий Супермодератор
Отправлено: 08 Декабря, 2014 - 10:30:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Блин, народ, для вас что ли сюрприз, что самое полезное на хабре - это ни разу не статьи, которые нередко неполные, ошибочные или вовсе бредовые, а комментарии к ним.
Прямо там же написано, почему пример в статье нерабочий и указано два способа, как это делать надо: http://habrahabr[dot]ru/post/125424/#comment_4135319


-----
PostgreSQL DBA
 
 Top
Contr
Отправлено: 08 Декабря, 2014 - 10:34:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




хабр помойка, согласен
 
 Top
Contr
Отправлено: 08 Декабря, 2014 - 18:00:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 202
Дата рег-ции: Окт. 2011  
Откуда: с Марса


Помог: 1 раз(а)




xhr.upload.addEventListener('progress', uploadProgress, false);
У меня вопрос такой: если я пересылаю несколько файлов, то прогресс для них общий?
А если мне надо для каждого файла свой прогресс, то единственный выход создать новый new XMLHttpRequest() ?

(Отредактировано автором: 08 Декабря, 2014 - 18:03:01)

 
 Top
armancho7777777 Супермодератор
Отправлено: 09 Декабря, 2014 - 02:02:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




Мелкий пишет:
самое полезное на хабре - это ни разу не статьи
Мелкий пишет:
а комментарии к ним
+1
 
 Top
nerv
Отправлено: 10 Декабря, 2014 - 17:09:47
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




если кто-то юзает ангуляр, может воспользоваться моим загрузчиком https://github[dot]com/nervgh/angular-file-upload

Удобно, но не оч гибко. В рамках mv* архитектуры, задача сводится к конвертации json-like объекта c файлами в FormData.
В проектах юзаю такое преобразование, если будет время, на гитхаб залью.
Работает через эту штуку https://github.com/nervgh/object-traverse

(Отредактировано автором: 10 Декабря, 2014 - 17:10:21)



-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
nerv
Отправлено: 15 Декабря, 2014 - 18:22:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 407
Дата рег-ции: Февр. 2013  
Откуда: Россия


Помог: 9 раз(а)




nerv пишет:
Удобно, но не оч гибко. В рамках mv* архитектуры, задача сводится к конвертации json-like объекта c файлами в FormData.
В проектах юзаю такое преобразование, если будет время, на гитхаб залью

https://github[dot]com/nervgh/object-to-formdata


-----
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB