Ich versuche derzeit, die cURL-Programmdatei zu verwenden, um mp4-Dateien mithilfe der POST-Methode in ein PHP-Skript hochzuladen. In der PHP-Datei überprüfe ich das Dateiformat und all diese Sachen. Hier ist die PHP-Datei:cURL Hochladen von Datei nach PHP
<?php
$allowedExts = array("jpg", "jpeg", "gif", "png", "mp3", "mp4", "wma");
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (($_FILES["file"]["type"] == "video/mp4") && ($_FILES["file"]["size"] < 2000000) && in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
} else {
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo $_FILES["file"]["name"] . " already exists. ";
} else {
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
} else {
echo "Invalid file";
}
?>
Wenn ich Dateien laden ein normaler HTML-Formular es richtig funktioniert. Dies ist das HTML-Formular i verwendet:
<!DOCTYPE html>
<head>
<title></title>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data" name="uploadedfile">
<label for="file"><span>Filename:</span></label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
Aber wenn ich es jetzt versuchen, den cURL-Client mit diesem Befehl:
"-F [email protected] http://localhost:1337/upload_file.php curl"
Es zeigt mir in der Konsole "Ungültige Datei" an, die normalerweise angezeigt wird, wenn die Datei nicht mit den Attributen übereinstimmt, die PHP überprüft (zum Beispiel passt sie nicht zum Dateityp).
Ich hoffe ihr versteht mein Problem und könnt mir helfen! :)
Greets Steven
Also ... haben Sie Debugging durchgeführt? Welche der Bedingungen in 'if (($ _FILES [" Datei "] [" Typ "] ==" video/mp4 ") && ($ _FILES [" Datei "] [" Größe "] <2000000) && in_array ($ Erweiterung, $ allowedExts)) 'scheitert? – melpomene
Nun, das ist der Punkt, in der Regel sollte keiner von ihnen fehlschlagen, seit wenn ich die gleiche Datei über das HTML-Formular hochladen, funktioniert es richtig. – GeeHopper