php图片上传mysql数据库

标签 php mysql database upload

我的脚本有问题。它将图像上传到我的托管服务器中。第二天或下周,创建的包含图像的文件夹从托管服务器中丢失,当然不是所有图像 - 两周内有 18-19% 的图像丢失。我问他们。他们告诉我-问题出在我的 php 代码中。如果有人能帮助我,我会很高兴。我可以在 mkdir() 中添加一些 0777 吗???我不知道。我一直在想...

<?php

if (isset($_FILES['myfile'])) {
    $ip = getRealIpAddr();
    $usernameupload = $user_data['username'];

    $title = sanitize($_POST['title']);
    $description = sanitize($_POST['description']);
    if (empty($_POST['folder']) === true) { $folder = sanitize($_POST['folder_option']);} else { $folder = sanitize($_POST['folder']);}
    $date = date('M-d-Y');
    $code = "";

    $errors = array();
    $allowed_ext =array('jpg', 'jpeg', 'png', 'gif');

    $file_name = $_FILES['myfile']['name'];
    $file_size = $_FILES['myfile']['size'];
    $file_tmp = $_FILES['myfile']['tmp_name'];
    $extension=explode('.',$file_name); 
    $file_ext=strtolower(end($extension));

    if (isset($_POST['submitupload'])) {
        if ($_FILES['myfile']['name'] == ""){
        $errors[] = ' *Upload file';
        } else if (in_array($file_ext, $allowed_ext) === false) {
        $errors[] = ' *Extension not allowed';
        }
    }

    if ($file_size > 5042880) {
        $errors[] = 'File size must be under 5mb';
        }
    if (strlen($folder) > 50) {
        $errors[] = 'Your new folder name must be max 50 characters';
        }

    if (empty($_POST['title'])) {
        $errors[] = 'Please Fill Title';
        }

    if (strlen($_POST['title']) > 255) {
        $errors[] = 'Your title must be max 255 characters';
        }

    if (empty($errors)) {

        require('db.inc.php');

        $charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        $length = 50;

        for ($i = 0; $i <= $length; $i++) {
            $rand = rand() % strlen($charset);
            $tmp = substr($charset, $rand, 1);
            $code .= $tmp;
            }

        $query = mysql_query("SELECT code FROM files WHERE code='$code'");
        $numrows = mysql_num_rows($query);

        while ($numrows != 0) {
                for ($i = 0; $i <= $length; $i++) {
                $rand = rand() % strlen($charset);
                $tmp = substr($charset, $rand, 1);
                $code .= $tmp;
                }
        $query = mysql_query("SELECT code FROM files WHERE code='$code'");
        $numrows = mysql_num_rows($query);
        }

        mkdir("files/$code");
        mkdir("files/thumbs/$code");


        if (move_uploaded_file($file_tmp, "files/$code/".$file_name)) {

        $file = "";     
        $query = mysql_query("INSERT INTO files VALUES ('', '$usernameupload', '$ip', '$title', '$code', '$folder', '$description', '$file_name', '$file_ext', '$file_size', '$date')");

        $query1 = mysql_query("INSERT INTO votes VALUES ('', '', '', '$code')");

        create_thumb('files/'.$code.'/', $file_name, 'files/thumbs/' . $code . '/');


        header("Location: userdownload.php?code=$code");
        exit();

            }
        }
    }
?>

<form action="" method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td id="editfill">Image:*</td>
            <td><input type="file" name="myfile" id="fileup"></td>
            <tr>
            <td></td>
            <td><?php 

            if (isset($_POST['submitupload'])) {
        if ($_FILES['myfile']['name'] == ""){
        echo '<div id="errormsg"> *Upload file </div>';
        } else if (in_array($file_ext, $allowed_ext) === false) {
        echo '<div id="errormsg"> *Allowed extension: .jpg, .jpeg, .png, .gif</div>';
        } else if ($file_size > 5042880) {
        echo '<div id="errormsg"> *File size must be under 5mb </div>';
        }
    }
    ?></td>
    </tr>
        </tr>
        <tr>
            <td id="editfill">Title:*</td>
            <td><input type="text" name="title" id="title" value="<?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['title']); ?>" maxlength="255"></td>
        <tr>
        <td></td>   
            <td><?php 
            if (isset($_POST['submitupload'])) {
            if (empty($_POST['title'])) {
        echo '<div id="errormsg"> *Please fill title </div>';
        }
            if (strlen($_POST['title']) > 255) {
        echo '<div id="errormsg"> *Your title must be max 255 characters</div>';
        }
        }
            ?></td>
         </tr>
        </tr>
         <tr>
            <td id="editfill">Create Album:</td>
            <td><input type="text" name="folder" id="title" value="<?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['folder']); ?>" maxlength="50">
            </td>
        <tr>
        <td></td>
        <td><?php   
        if (strlen($folder) > 50) {
        echo '<div id="errormsg"> *Your new album name must be max 50 characters</div>';
        }
 ?></td>
        </tr>       
        </tr>
        <tr>
            <td id="editfill">Your Albums:</td>
            <td>
            <select name="folder_option" class="select">
            <option></option>
        <?php  
        $mysql_folder = mysql_query("SELECT `folder_name` FROM `files` WHERE `username` = '$usernameupload' AND `folder_name` > '' GROUP BY `folder_name` ORDER BY `folder_name` ASC"); 

        while ($query_row = mysql_fetch_array($mysql_folder)) {
                $filefolder = $query_row['folder_name'];

                echo '<option value="' . $filefolder . '">' . $filefolder . '</option>';
                }

        ?>
    </select>
            </td>
        <tr>
        <td></td>
        <td></td>
        </tr>       
        </tr>
        <tr>
            <td id="editfill">Description:</td>
            <td><textarea name="description" id="description"><?php if (isset($_POST['submitupload'])) echo htmlentities($_POST['description']); ?></textarea></td>
        <tr><td></td>
            <td>
        </td>
        </tr>       
        </tr>
        <tr>
            <td></td>
            <td><center><br><input type="submit" name="submitupload" id="submitupload" value="Upload"></center></td>
        </tr>
    </table>
</form>

最佳答案

尝试这个来有效地查看 mkdir 创建是否没有失败。 否则即使将其添加到数据库中,文件夹和图像也肯定不会存在。

//previous code...
mkdir("files/$code");
mkdir("files/thumbs/$code");

//change to this...
if (!mkdir("files/$code", 0777, true)) {
    die('Failed to create folders...');
}

if (!mkdir("files/thumbs/$code", 0777, true)) {
    die('Failed to create sub folders...');
}

关于php图片上传mysql数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403291/

相关文章:

php - 统计php mysql中的多级营销(树)记录

php - 如何在 Laravel 中使用多个数据库

c# - C# 中的 2 个数据库中的注册用户

php - Symfony2 : determine if a controller is called from a development environment or from a production environment

php - MySQL 查询不会在 PHP 脚本中执行,但在 MySQL Workbench 中运行良好

mysql - MS Access 2003 年公司报告

c# - .Net C# 如何连接到外部 SQL Server 数据库? OleDb 还是其他?

mysql - mysql World 数据库的更新版本?

php - 重写 url 不包含布局?

mysql - 找出日期之间的差异