Мультизагрузка файлов при помощи jQuery Form
Задача к определённой форме подцепить мультизагрузчик файлов и всё это дело отдавать серверу ajax'ом.
Удалось на чистом jqeury сделать это всё + процесс загрузки (помогла статья на этом сайте с готовым вариантом реализации загрузчика). Но проблема оказалось в том, что прогресс загрузки стал показываться даже если в форме не передавались файлы...
Обратился к плагинам, самый удобный и простой - jquery form.
Но никак не могу скормить движку несколько файлов.
на сервер отправляется массив вида:
Array ( [files] => Array ( [name] => Array ( [0] => 9.jpg [1] => 20ebee_orig.jpg ) [type] => Array ( [0] => image/jpeg [1] => image/jpeg ) [tmp_name] => Array ( [0] => /tmp/phpS9olDU [1] => /tmp/phpFSwT6A ) [error] => Array ( [0] => 0 [1] => 0 ) [size] => Array ( [0] => 59329 [1] => 106334 ) ) )
Соответственно, цикл
foreach( $_FILES as $file_id => $data ){ $attach_id = media_handle_upload( $file_id, $post_id ); // ошибка if( is_wp_error( $attach_id ) ) $uploaded_imgs[] = 'Ошибка загрузки файла `'. $data['name'] .'`: '. $attach_id->get_error_message(); else $uploaded_imgs[] = wp_get_attachment_url( $attach_id ); }
Не обрабатывает такой массив. И так и сяк ковырялся, либо ошибка "файл слишком незначительный", либо array.
Вид массива, который работает с циклом:
Array ( [0] => Array ( [name] => 9.jpg [type] => image/jpeg [tmp_name] => /tmp/php4VNlCO [error] => 0 [size] => 59329 ) [1] => Array ( [name] => 20ebee_orig.jpg [type] => image/jpeg [tmp_name] => /tmp/phpw4pTIR [error] => 0 [size] => 106334 ) )
Понимаю, что проблема на стороне сервера, надо правильно файлы принять, но не удается. Нужна помощь!
нет, то что вы хотите называется плагином - WP Dropzone
Что значит "нет"? Я не плагин просил, а помочь с циклом для обработки данных, которые отправляются на сервер
"нет" - значит что Вы что-то не правильно делаете.
Т.е. ты массив переделал в нужный формат и не можешь его правильно скормить функции для загрузки. Все готово, а функция не пашет, так?
Тебе нужна другая фукнция - media_handle_sideload() описание там почитай, поймешь что делаешь не так. В частности:
П.С. Для работы с Аяксом в ВП, посмотри мой плагин ajax-simply. Он платный, но не дорогой, купи не пожалеешь, пожалеешь верну деньги. Я без него уже как без рук в аяксе.