WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Мультизагрузка файлов при помощи 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
		)

)

Понимаю, что проблема на стороне сервера, надо правильно файлы принять, но не удается. Нужна помощь!

0
Cleric
5.6 лет назад
  • 0
    el-lable620 el-lable.ru

    нет, то что вы хотите называется плагином - WP Dropzone

    Cleric 5.6 лет назад

    Что значит "нет"? Я не плагин просил, а помочь с циклом для обработки данных, которые отправляются на сервер

    el-lable 5.6 лет назад

    "нет" - значит что Вы что-то не правильно делаете.

    Комментировать
  • 0
    Kama9613

    Т.е. ты массив переделал в нужный формат и не можешь его правильно скормить функции для загрузки. Все готово, а функция не пашет, так?

    Тебе нужна другая фукнция - media_handle_sideload() описание там почитай, поймешь что делаешь не так. В частности:

    media_handle_upload() работает напрямую с глобальным массивом $_FILES, это не всегда удобно. Иногда удобнее указать произвольные данные файла и обработать их, для этого и нужна media_handle_sideload().

    П.С. Для работы с Аяксом в ВП, посмотри мой плагин ajax-simply. Он платный, но не дорогой, купи не пожалеешь, пожалеешь верну деньги. Я без него уже как без рук в аяксе.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация