php - 文件上传脚本返回 false

标签 php mysql

我正在尝试制作一个脚本,允许用户更改我正在制作的网站的个人资料图片。以下是表单的 HTML 代码:

        <form action="upload_prof_pic.php" method="POST" enctype="multipart/form-data">
            <input type="file" class="btn btn-default" name="file" id="file" /><br /><br />
            <input type="submit" class="btn btn-default" value="Upload Profile Picture" />
        </form>

以下是 upload_prof_pic.php 的 PHP 代码:

<?php
session_start();
require("includes/connect.php");

$results = $db->query("SELECT * FROM users WHERE username='".$_SESSION["logged_in"]."'");
$rows = $results->fetch();

$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
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) {
        //error: uploading
        header("Location: account.php?err=upload");
    } else {
        //success
        move_uploaded_file($_FILES["file"]["tmp_name"],
            "prof_pic/users/".$rows["username"]."/" . $_FILES["file"]["name"]);
        $db->query("UPDATE users SET prof_pic='".$_FILES['file']['name']."' WHERE username='".$_SESSION["logged_in"]."'");
        header("Location: account.php");
     }
} else {
    //error: invalid file
    header("Location: account.php?err=invalid");
}

?>

它始终运行脚本的“//错误:无效文件”部分。有人可以帮忙吗?它工作了一次,然后我改变了“//成功”部分中的一些内容。这本来不应该有任何影响,但显然确实有。

最佳答案

我遇到了同样的错误,所以我使用了以下 JavaScript 编码。

    <script type="text/javascript" src="js/jquery-func.js"></script>
<SCRIPT type="text/javascript">
    function ValidateFileUpload() {
        var fuData = document.getElementById('filename');
        var FileUploadPath = fuData.value;

//To check if user upload any file
        if (FileUploadPath == '') {
            alert("Please upload an image");

        } else {
            var Extension = FileUploadPath.substring(
                    FileUploadPath.lastIndexOf('.') + 1).toLowerCase();

//The file uploaded is an image

if (Extension == "gif" || Extension == "png" || Extension == "bmp"
                    || Extension == "jpeg" || Extension == "jpg") 

            {


             <?php
 move_uploaded_file($_FILES["file"]["tmp_name"],
            "prof_pic/users/".$rows["username"]."/" . $_FILES["file"]["name"]);
        $db->query("UPDATE users SET prof_pic='".$_FILES['file']['name']."' WHERE username='".$_SESSION["logged_in"]."'");
        header("Location: account.php");
?>
            } 

//The file upload is NOT an image
else {
                alert("Photo only allows file types of GIF, PNG, JPG, JPEG and BMP. ");

            }
        }
    }

html部分

<input onchange="ValidateFileUpload(this);" type="file"  name="file"  id="filename"/>

关于php - 文件上传脚本返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22775619/

相关文章:

php - MySql 在两个表之间创建简单的外键

php 从不同的函数调用 "return"

javascript - 带提交的动态 Ajax 表单

php - 使用具有多个类的静态 transactionCounter 管理事务是正确的方法吗?

php - 发送第一条消息后将用户重定向到对话?

php - 如何查看用户是否在线

php - Facebook评论ID问题

Java:将分数插入远程 MySQL 数据库而无需硬编码登录凭据

java - "java.sql.SQLException: No database selected"与 MySQL JDBC

mysql - Delphi:无法对打开的数据集执行此操作