Мои вложения в wp_mail() отправляются с расширением .tmp.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Мои вложения в wp_mail() отправляются с расширением .tmp.

Сообщение Anonymous »

Я создаю виджет формы с полем загрузки, где данные формы отправляются через POST-запрос через Wordpress REST_API. Работает хорошо, но я не могу отправить загружаемый файл с правильным именем и расширением файла. В настоящее время отправляется с временным именем и расширением .tmp.
Запрос JS Ajax просто для примера

Код: Выделить всё

submitData(form) {

let formData = new FormData(form[0]);

jQuery.ajax({
url: '/wp-json/my-plugin/v1/send_email/',
type: 'POST',
data: formData,
processData: false,
contentType: false,
beforeSend: function () {
// validate fields
},
success: function (response) {
// success actions
},
error: function () {
// build error messages
}
});
return false;
}
Пример данных файла, полученных через REST_API

Код: Выделить всё

{
"form_fields": {
"name": {
"file": "beatifull-picture.jpeg"
},
"full_path": {
"file": "beatifull-picture.jpeg"
},
"type": {
"file": "image/jpeg"
},
"tmp_name": {
"file": "C:\\Windows\\Temp\\phpD363.tmp"
},
"error": {
"file": 0
},
"size": {
"file": 364006
}
}
}
И, наконец, код, отвечающий за добавление вложения в wp_mail()t:

Код: Выделить всё

 protected function send_mail($mail_data, $file){

// ..

$attachment = $this->prepare_attachments($file);

$email = wp_mail(
$mail_data['mail_to'],
$mail_data['mail_subject'],
$mail_data['mail_message'],
$mail_data['headers'],
$attachment,
);
}

// KEY FUNCTION
protected function prepare_attachments($files) {
$attachments = [];

// Iterate through the files array to extract attachments
if (isset($files['form_fields']['tmp_name']['file'])) {
$tmp_name = $files['form_fields']['tmp_name']['file'];
$error = $files['form_fields']['error']['file'];

if ($error === UPLOAD_ERR_OK) {
// Log the path of each file
error_log('Attachment: ' . $tmp_name);
$attachments[] = $tmp_name;
}
}

return $attachments;
}
Я пробовал несколько методов. Попытались получить исходное имя файла вместо временного имени, но файлы не прикрепились; попробовал загрузить в WordPress перед прикреплением; пытался сохранить исходное имя и расширение, а затем заменить их, но пока ничего не получилось.
Заранее спасибо и извините за длинные коды

Подробнее здесь: https://stackoverflow.com/questions/784 ... -extension
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»