以下是我的代码,用户可以在其中上传文件。我想知道的是,有没有办法通过服务器端有一种方法首先将文件的文件格式限制为jpeg和png,然后当用户点击提交按钮时,如果文件格式正确然后在同一页面上显示警告,说明“文件正确”,否则显示警告“文件不正确”。
有人可以提供编码,如果他们知道如何做到这一点。谢谢,任何帮助将不胜感激:)
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
答案 0 :(得分:2)
用于全面检查文件上传的代码,但您必须更改$ allowedtypes。 (复制而不是链接,因为它来自非英语网站)
<?php
if(isset($_POST["submit"])){
$allowedtypes=array("jpg"=>true,"png"=>true,"gif"=>true,"txt"=>true);
$filename = $_FILES['file1']['name'];
$source = $_FILES['file1']['tmp_name'];
$file_size=$_FILES['file1']['size'];
$saveloc = "uploads/" . $filename;
$maxfilesize=1024*1024*10;
$nameext=explode(".",$filename);
if(preg_match('/^[A-Za-z0-9\-\_]{1,}\.[a-zA-Z0-9]{0,4}$/',$filename)){
if(!empty($allowedtypes[strtolower($nameext[1])]) && $allowedtypes[strtolower($nameext[1])]===true){
if($file_size<=$maxfilesize){
if(!file_exists($saveloc)){
if(move_uploaded_file($source, $saveloc)) {
chmod($saveloc,644);
echo "Successful upload. <a href='".$saveloc."'>Fájl megtekintése</a>";
}
else echo "Cannot move";
}
else echo "Existing file";
}
else echo "Too big file";
}
else echo "Not allowed extension";
}
else echo "Only alphanumeric files allowed";
}
else echo "<form method='post' enctype='multipart/form-data' action='secureupload.php'> File: <input type='file' name='file1' /><br /><input
name='MAX_FILE_SIZE' type='hidden' value='10485760' /> <input type='submit' value='Upload' name='submit' /></form>";
?>
答案 1 :(得分:1)
你在谈论服务器端处理程序并写'警报'...... khm ... 如果你想通过服务器端做事,那么使用php处理程序
http://php.net/manual/en/features.file-upload.post-method.php
如果您想通过客户端进行操作,请使用javascript事件,例如更改事件
<script>
function check() {
var file = document.getElementById('file').value;
var temp = file.split(/\.+/).pop();
alert(temp);
}
</script>
<input type="file" name="file" id="file" onchange="check();" />
你在temp var。
中有文件扩展名答案 2 :(得分:0)
有PHP函数可以做到这一点。您想查看mime_content_type和finfo_file。这些是内置的PHP命令,允许您解释正在上载的文件的实际文件类型。然后,您可以将mime类型过滤为.gif / .jpg / etc.您想要检查文件名上的mime类型,因为可以更改文件名以屏蔽实际的文件类型。如果您想要代码示例,那么这些页面上有很多内容以及一些优秀的用户提供的替代方案。
答案 3 :(得分:0)
文件顶部的类似内容应该有效:
<?php
foreach ($_FILES as $file)
{
$tmp = explode(".", $file["tmp_name"]);
if (!in_array($tmp[count($tmp)-1], array("jpeg", "png"), true))
die("<script>alert('File is incorrect');</script>");
}
echo "<script>alert('File is correct');</script>";
?>