Ich schrieb dies, um ein Bild auf meinen lokalen Apache-Webserver mit input
Element in HTML zu laden. Die file
wird als nicht leer protokolliert, aber warum ist die form_data
komplett leer?FormData append funktioniert nicht
$('#upload-image').change(function(e){
var file = e.target.files[0];
var imageType = /image.*/;
if (!file.type.match(imageType))
return;
console.log(file);
var form_data = new FormData();
form_data.append('file', file);
console.log(form_data);
$.ajax({
url: 'http://localhost/upload.php',
cache: false,
contentType: false,
processData: false,
data: form_data,
type: 'POST',
success: function(response){
console.log(response);
},
error: function(error){
console.log(error);
}
});
});
Das ist mein upload.php
auf lokalen Webserver
<?php
header('Access-Control-Allow-Origin: *');
if (0 < $_FILES['file']['error']) {
echo 'Error: ' . $_FILES['file']['error'] . '<br>';
}
else {
move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
$target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_FILES['file']['name'];
echo $target_path;
}
?>
Die console.log(response)
Protokolle alle Codezeilen PHP-Datei anstelle des zurückgegebenen Ergebnisses von echo
hast du versucht, in der url nur 'upload.php' zu verwenden? Es ist nicht üblich, einen absoluten Pfad zu sehen, und den localhost nicht zu erwähnen. Denken Sie daran, dass der AJAX-Aufruf davon abhängt, wo die Javascript-Datei sitzt. Wenn Sie zum Beispiel einen Ordner in Ihrem Root namens "phpFiles/upload.php" haben sollte in die URL eingefügt werden. – Leo
console.log (form_data); Was bringt dich hierher? –
Was erwarten Sie zu sehen? Sie können ein formData-Objekt nicht wirklich protokollieren, daher sollte es leer sein, selbst wenn die Datei vorhanden ist. Haben Sie den Server überprüft, ob die Datei empfangen wurde oder nicht? – adeneo