PHP Upload funktioniert auf PC aber nicht aufm Handy?
Hallo,
dieser Code funktioniert nicht auf Handy aber auf dem PC, hat wer tipps?
Clientseite (JavaScript):<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<script src="https://code.jquery.com/jquery-3.7.1.js" integrity="sha256-eKhayi8LEQwp4NKxN+CfCh+3qOVUtJn3QNZ0TciWLP4=" crossorigin="anonymous"></script></head>
<body>
<form id="fileUploadForm" enctype="multipart/form-data">
<input type="file" name="file" id="fileInput" required>
<button type="button" id="uploadButton">Hochladen</button>
</form>
<script>
$(document).ready(function(){
$('#uploadButton').on('click touchend', function(){
var formData = new FormData($('#fileUploadForm')[0]);
$.ajax({
url: 'https://sub-upload.main.de/upload.php',
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function(response){
console.log(response);
alert(response);
},
error: function(xhr, status, error){
alert(error + xhr.status);
}
});
});
});
</script>
</body>
</html>
Serverseite (upload.php):<?php
$targetDirectory = '../uploads/';
header("Access-Control-Allow-Origin: https://sub.main.de");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
if (!file_exists($targetDirectory)) {
mkdir($targetDirectory, 0777, true);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$targetFile = $targetDirectory . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $targetFile)) {
echo 'Die Datei wurde erfolgreich hochgeladen.';
} else {
echo 'Beim Hochladen der Datei ist ein Fehler aufgetreten.';
}
} else {
echo 'Keine Datei zum Hochladen gefunden.';
}
?>
2 Antworten
Du bist sicher, dass die Domain main.de dir gehört? Oder ist das nur eine Dummy-Domain und in deinem Script steht was anderes drin? Wenn ja, dann verwende bitte example.org dafür.
Wenn du main.de wirklich verwendets und lokal auf deinem Rechner die eigentliche Domain per hosts-Datei auf deinen Localhost umgeleitet hast, dann funktioniert das natürlich nicht auf dem Handy, da das auf die echte Domain zugreift.
Hab momentan grad keine Möglichkeit, das auszuprobieren, was mir aber komisch erscheint, ist, dass du contentType auf false setzt. Könnte dazu führen, dass der Browser auf dem Handy dann nichts mitschickt. Für File Uploads sollte das auf multipart/form-data sein.