我正在制作在线存储,并希望用户上传带有类别的文件,我已经成功完成了图片,但我无法使用音频&视频格式,有什么帮助吗?
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/ jpg") ||
($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000) && 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";
}
?>
答案 0 :(得分:3)
您的代码已经损坏。 $_FILES[$file]["type"]
毫无意义。它由浏览器上传文件提供,而不是由服务器提供,因此经常丢失或错误。应该忽略它。
将初始条件更改为:
if (($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) {
将解决这个问题。但是,您需要增加大小限制(当前为20000 = 20 KB),因为对于视频文件来说,这显然会太小。 :)
答案 1 :(得分:1)
不是检查文件的扩展名.[a-z]
(可以更改) - 为什么不检查文件本身? (即使$_FILES["file"]["type"]
可以说谎)
function get_mime($file) {
if (function_exists("finfo_file")) {
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension
$mime = finfo_file($finfo, $file);
finfo_close($finfo);
return $mime;
} else if (function_exists("mime_content_type")) {
return mime_content_type($file);
} else if (!stristr(ini_get("disable_functions"), "shell_exec")) {
// https://stackoverflow.com/a/134930/1593459
$file = escapeshellarg($file);
$mime = shell_exec("file -bi " . $file);
return $mime;
} else {
return false;
}
}
答案 2 :(得分:1)
对于我的意见,更改php.ini文件,如''upload_max_filesize = 500M','post_max_size = 500M','memory_limit = 250M','max_input_time = 45000'和'max_execution_time = 30000'。
我编辑了这个php.ini文件,我可以上传音频和视频文件。