wordpress + ajax загрузка файлов

djdiplomat
На сайте с 05.08.2009
Offline
136
3391

Суть.

Есть форма (самописный плагин). Через аякс отправляет на почту данные.

Нужно прикрутить отправку вложений

Для работы функции wp_mail мне нужно, чтобы файл успешно скачался на сервак.

Но по ходу он не скачиавется. тк.

$movefileU = $movefile['url']; выдает null

в тоже время movefileRe выдает что "Файл был успешно загружен"

<form id='wl_ajax_form_plugin4'>
<label>ФИО</label><input type='text' name='user_name' onblur='doThis(this)' id='wl_user_name4' placeholder='Ваши ФИО'/>
<label>Прикрепите файл с фотографией (портрет, не более 200 Кбайт)</label><input type='file' name='fileFF1[]' multiple id='user_file' >
<input type='hidden' name='wl_ajax_form_nonce' value='$nonce' id='wl_ajax_form_nonce4'/>
<input type='hidden' name='number_form' value='4' id='number_form4'/>
<div class='button2' id='wl_send_form_btn4'>Отправить</div>
</form>

Аякс


jQuery('#wl_send_form_btn4').click( function() { /* обработчик четвертой формы */
var name = jQuery('#wl_user_name4').val();
var nonce = jQuery('#wl_ajax_form_nonce4').val();
var user_file = jQuery('#user_file').val();
var eror;
var number_form = 4;


jQuery.ajax({
type : "post",
dataType : "json",
url : wlAjax.ajaxurl,
data : {
action: "wl_send_ajax",
nonce : nonce,
number_form : number_form,
name : name,
user_file : user_file
},
beforeSend : function(){
jQuery('#wl_ajax_form_plugin4').trigger( 'reset' );
},
error : function(request, txtstatus, errorThrown){
},
success : function(response) {
console.log(response);
if(response.type == "success") {
jQuery('#wl_form_infomsg4').html("Сообщение отправлено.");
}
else {
jQuery('#wl_form_infomsg4').html('Отправка не удалась.');
}
}
})
return;
});
....

if ($number_form == 4) {
$user_file = $_REQUEST['user_file'];
$result['fileFF1'] = $_FILES('fileFF1');
if ( ! function_exists( 'wp_handle_upload' ) )
require_once( ABSPATH . 'wp-admin/includes/file.php' );
$overrides = array( 'test_form' => false );

$movefile = wp_handle_upload( $user_file, $overrides );

if ( $movefile ) {
$movefileRe = "Файл был успешно загружен.\n";

$movefileU = $movefile['url'];
//print_r( $movefile );
} else {
$movefileRe = "Возможны атаки при загрузке файла!\n";

}
$result['movefile0'] = $movefile1;
$result['movefileRe'] = $movefileRe;
}
дани мапов
На сайте с 06.09.2012
Offline
204
#1

Права доступа на сайте проверяли?

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
K
На сайте с 03.06.2015
Offline
45
#2


$result['fileFF1'] = $_FILES('fileFF1');

Даже если есть такая функция $_FILES(), то значит она затирает глобальный массив $_FILES.

И еще, по смыслу предложения можно закачать 1 файл, а поле стоит для множественного выбора. Это значит в скрипте вы должны предусмотреть этот вариант.

---------- Добавлено 17.06.2015 в 06:24 ----------

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

MYSQL PHP JS HTML CSS SEO TXT США СССР
djdiplomat
На сайте с 05.08.2009
Offline
136
#3
kostyanet:
ковыряйтесь сами в этом г.

Могли бы просто пройти мимо...

А вообще интересно, если вас заказчик просит, вы тоже так отвечаете? Или вы тупо не беретесь за такие заказы под любыми предлогами.

Оптимизайка
На сайте с 11.03.2012
Offline
396
#4

<form id='wl_ajax_form_plugin4' enctype="multipart/form-data" method="post">

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
K
На сайте с 03.06.2015
Offline
45
#5

У него не форма уходит, а жикверь лопочет чо-та свое.

djdiplomat, я мог, это просто итерация. Я ответил, потом посмотрел коды, потом еще раз удивился, потом вообще удивился, а потом понял что это не коды, а просто набор букв от человека ровным счетом не понимающего что он делал. Такое нельзя починить, это надо брать и все переписывать.

---------- Добавлено 17.06.2015 в 14:50 ----------

Хорошо, начинаем по шагам. Сначала сделайте как написал Оптимизайка - нормальную форму для метода post.

Затем в js отгружаете ее как таковую, без жикверей, они там не нужны стопицот лет.

Затем в php получаете $_FILES и берете из него все данные.

Затем записываете файл в папку, в публичную, видимую из сети и превращаете ее адрес в урл. В относительной адресации - одно и то же, превращать ничего не надо.

Затем отгружаете этот урл в теге img. Всё.

---------- Добавлено 17.06.2015 в 14:51 ----------

Неужели на ВП нет таких плагинов - файл картинки залить?

---------- Добавлено 17.06.2015 в 14:54 ----------

djdiplomat:
А вообще интересно, если вас заказчик просит

Мои заказчики сами не пытаются программировать, поэтому можно починить. У вас - тот самый случай, неоперабельный.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий