上传文件服务器端

时间:2012-02-29 17:56:37

标签: php

以下是我的代码,用户可以在其中上传文件。我想知道的是,有没有办法通过服务器端有一种方法首先将文件的文件格式限制为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> 

4 个答案:

答案 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_typefinfo_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>";
?>