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
Форумы портала PHP.SU :: Версия для печати :: Не видать $_FILES
Форумы портала PHP.SU » » Вопросы новичков » Не видать $_FILES

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

1. maragon - 12 Января, 2015 - 00:32:59 - перейти к сообщению
Решил сделать простую мультизагрузку фотографий.
Итог: $_FILES выводит пустым.. Что не так?
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <script>
  3. $("#file").live("change", function(){
  4. var data = new FormData();
  5. var error = "";
  6. jQuery.each($("#file")[0].files, function(i, file) {
  7. if(file.name.size > 1000000) {              
  8. error = error + "Файл " + file.name + " имеет неправильный размер<br>";            
  9. }              
  10. if(file.length < 1) {
  11. error = error + "Название файла " + file.name + " превышает лимит символов<br>";
  12. }
  13. if(file.type != "image/png" && file.type != "image/jpg" && !file.type != "image/gif" && file.type != "image/jpeg" ) {
  14. error = error + "Файл  " + file.name + " имеет не верный формат<br>";
  15. }      
  16. data.append("file-"+i, file);
  17. });
  18. if(error != ""){  Box.Info('error', 'Ошибка', error, 250, 10000); $("#file").replaceWith($("#file").clone()); } else {
  19. $.ajax({
  20. url: '/?go=photos&act=upload',
  21. data: data,
  22. cache: false,
  23. contentType: false,
  24. processData: false,
  25. type: 'POST',
  26. success: function(data){
  27. Box.Info('error', 'Фотографии успешно загружены', '', 200, 5000);
  28. $("#file").replaceWith($("#file").clone());
  29. alert(data);
  30. }
  31. });
  32. }
  33. });
  34. </script>
  35. <form action="" enctype="multipart/form-data" method="POST">
  36. <input id="file" type="file" multiple="multiple" name="file[]" onclick="$('.box_info').fadeOut('fast');$('.box_info').remove">
  37. </form>
  38.  


/?go=photos&act=upload
2. RickMan - 12 Января, 2015 - 03:57:49 - перейти к сообщению
я не уверен, но если идет выборка по id, то возвращается либо ничего либо 1 вариант, следовательно выбирать первый вариант из массива не стоит:
CODE (javascript):
скопировать код в буфер обмена
  1. jQuery.each($("#file")[0].files, function(i, file) {

поменяй на:
CODE (javascript):
скопировать код в буфер обмена
  1. jQuery.each($("#file").files, function(i, file) {

Ну или установи себе filebug и дебажь ajax запрос.
3. DelphinPRO - 12 Января, 2015 - 15:11:22 - перейти к сообщению
У вас FormData пустой Улыбка В конструктор можно передать форму.

CODE (javascript):
скопировать код в буфер обмена
  1. var form = document.getElementById('myForm');
  2. new FormData(form);
4. RickMan - 12 Января, 2015 - 15:34:07 - перейти к сообщению
DelphinPRO пишет:
У вас FormData пустой Улыбка В конструктор можно передать форму.

CODE (javascript):
скопировать код в буфер обмена
  1. var form = document.getElementById('myForm');
  2. new FormData(form);


Мне кажется, что даже при том, что он не передает id, все равно, data у него должена была бы заполниться файлами, если бы алгоритм работал правильно. Просто получается он создает пустой объект и ему добавляет файлы.
5. DelphinPRO - 12 Января, 2015 - 16:38:11 - перейти к сообщению
RickMan пишет:
Просто получается он создает пустой объект и ему добавляет файлы.

Да, действительно. Был невнимателен. Прошу прощения.

 

Powered by ExBB FM 1.0 RC1