Со стороны сервера, используя платформу Laravel Php, вы можете получить файл с помощью такой функции:
аюсь создать загрузчик файлов в модале Sweet Alert 2 с помощью jQuery и php. Вот мой код, но он не работает: как я могу заставить это работать?
Спасибо
HTML (кнопка, чтобы открыть модал с Sweet Alert 2):
<button class="bx--btn bx--btn--primary" type="button" id="swal_upload">Apri</button>
JavaScript:
$('#swal_upload').click(function(){
var api = 'api/UploadFile.php';
swal({
title: "Carica immagine",
html: '<input id="fileupload" type="file" name="userfile">'
}).then(function() {
var formData = new FormData();
formData.append('userfile', $('#fileupload').val().replace(/.*(\/|\\)/, ''));
console.log(formData);
$.ajax({
type: 'POST',
url: api,
data: formData,
dataType: 'json',
processData: false,
contentType: false,
headers: {"Content-Type":"form-data"},
async: true,
success: function(result){
console.log("OK client side");
console.log(result.Response);
}
});
})
});
php (api / UploadFile.php):
$entered = "PHP started";
$tmpFilePath = $_FILES['userfile']['tmp_name'];
$uploaddir = 'public/';
if ($tmpFilePath != ""){
$newFilePath = $uploaddir . basename($_FILES['userfile']['name']);
if(move_uploaded_file($tmpFilePath, $newFilePath)) {
$uploaded = "Upload OK server side";
} else {
$uploaded = "Upload failed server side";
}
}
// Prepare response, close connection and send response to front-end
$array['Response'] = array(
'entered' => $entered,
'tmp_path' => $tmpFilePath,
'new_path' => $newFilePath,
'file_name' => $_FILES['file']['name'],
'uploaded' => $uploaded
);
echo json_encode($array);
Вывод у меня в консоли:
FormData {}прото: FormData OK на стороне клиента {введено: «PHP запущен», tmp_path: null, new_path: null, имя_файла: null, загружено: null} введено: «PHP запущено» имя_файла: null new_path: null tmp_path: null загружено: nullпрото: Object
Как видите, php запускается, но файл не передается на сервер.