私は現在、cURL実行ファイルを使用して、mp4ファイルをPOSTメソッドを使用してPHPスクリプトにアップロードしようとしています。 PHPファイルでは、ファイル形式とすべての種類のものをチェックしています。 PHPファイルは次のとおりです:cURLファイルを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";
}
?>
通常のHTMLフォームを使用してファイルをアップロードすると、正しく動作します。これは私が使用するHTMLフォームです:
<!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>
しかし、私は今、このコマンドを使用してcURLのクライアントを使用して、それをしようとすると:
"カール-Fの[email protected] http://localhost:1337/upload_file.php"
それは、コンソールに "Invalid File"と表示されます。これは通常、ファイルがPHPでチェックしている属性と一致しないときに表示されます。
皆さん、私の問題を理解して助けてくれることを願っています! :)
はカールが型に任意の推測をしないとPOSTリクエストで自動的にそれを送信しませんのでご$_FILES["file"]["type"]
チェックが失敗しているスティーブン・
だから、デバッグを済ませましたか? &if($ _FILES ["file"] ["size"] <2000000)&& in_array($ file)拡張子、$ allowedExts)) 'が失敗しますか? – melpomene
よくあることですが、HTMLフォームを使って同じファイルをアップロードすると正しく動作するので、通常はそれらのどれも失敗しません。 – GeeHopper