图像上传和管理系统PHP

时间:2016-09-19 12:54:31

标签: php mysql image upload

早上好,我在博客/ cms上创建图片时出现问题。他们是一个帖子文章页面,用户可以上传图片然后写他的文章。基本上,我想要做的是将图像上传到uploads / foler,然后验证它是否存在。如果文件不存在,它将被上传,并且在创建帖子后将引用将被插入到数据库Posts表中,如果它存在,则不会上传但是引用仍将插入到Posts表中。图像插入功能验证图片大小,但它也以sha1格式为文件生成新名称。所以这是插入图像的函数:

   function addImage() {

    try {

        // Undefined | Multiple Files | $_FILES Corruption Attack
        // If this request falls under any of them, treat it invalid.
        if (
                !isset($_FILES['upfile']['error']) ||
                is_array($_FILES['upfile']['error'])
        ) {
            throw new RuntimeException('Invalid parameters.');
        }

        // Check $_FILES['upfile']['error'] value.
        switch ($_FILES['upfile']['error']) {
            case UPLOAD_ERR_OK:
                break;
            case UPLOAD_ERR_NO_FILE:
                throw new RuntimeException('No file sent.');
            case UPLOAD_ERR_INI_SIZE:
            case UPLOAD_ERR_FORM_SIZE:
                throw new RuntimeException('Exceeded filesize limit.');
            default:
                throw new RuntimeException('Unknown errors.');
        }

        // You should also check filesize here. 
        if ($_FILES['upfile']['size'] > 1000000) {
            throw new RuntimeException('Exceeded filesize limit.');
        }


        // DO NOT TRUST $_FILES['upfile']['mime'] VALUE !!
        // Check MIME Type by yourself.
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        if (false === $ext = array_search(
                $finfo->file($_FILES['upfile']['tmp_name']), array(
            'jpg' => 'image/jpeg',
            'png' => 'image/png',
            'gif' => 'image/gif',
                ), true
                )) {
            throw new RuntimeException('Invalid file format.');
        }

        // You should name it uniquely.
        // DO NOT USE $_FILES['upfile']['name'] WITHOUT ANY VALIDATION !!
        // On this example, obtain safe unique name from its binary data.
        if (!move_uploaded_file(
                        $_FILES['upfile']['tmp_name'], sprintf('./uploads/%s.%s', $sha2 = sha1_file($_FILES['upfile']['tmp_name']), $ext
                        )
                )) {
            throw new RuntimeException('Failed to move uploaded file.');
        }


function addImage() {

    try {

        // Undefined | Multiple Files | $_FILES Corruption Attack
        // If this request falls under any of them, treat it invalid.
        if (
                !isset($_FILES['upfile']['error']) ||
                is_array($_FILES['upfile']['error'])
        ) {
            throw new RuntimeException('Invalid parameters.');
        }

        // Check $_FILES['upfile']['error'] value.
        switch ($_FILES['upfile']['error']) {
            case UPLOAD_ERR_OK:
                break;
            case UPLOAD_ERR_NO_FILE:
                throw new RuntimeException('No file sent.');
            case UPLOAD_ERR_INI_SIZE:
            case UPLOAD_ERR_FORM_SIZE:
                throw new RuntimeException('Exceeded filesize limit.');
            default:
                throw new RuntimeException('Unknown errors.');
        }

        // You should also check filesize here. 
        if ($_FILES['upfile']['size'] > 1000000) {
            throw new RuntimeException('Exceeded filesize limit.');
        }


        // DO NOT TRUST $_FILES['upfile']['mime'] VALUE !!
        // Check MIME Type by yourself.
        $finfo = new finfo(FILEINFO_MIME_TYPE);
        if (false === $ext = array_search(
                $finfo->file($_FILES['upfile']['tmp_name']), array(
            'jpg' => 'image/jpeg',
            'png' => 'image/png',
            'gif' => 'image/gif',
                ), true
                )) {
            throw new RuntimeException('Invalid file format.');
        }
               if (file_exists($_SESSION['filefullname'])) {
                    echo "The file $filename exists";
                    $_SESSION['sha'] == "exists";
                       echo $_SESSION['sha'];
                    echo $_SESSION['filefullename'];
                } else {
                    echo "The file $filename does not exist";
                    $_SESSION['sha'] == "notexists";
                    $_SESSION['filefullname'] = $filename;
                    echo $_SESSION['sha'];
                    echo $_SESSION['filefullename'];
                }

        // You should name it uniquely.
        // DO NOT USE $_FILES['upfile']['name'] WITHOUT ANY VALIDATION !!
        // On this example, obtain safe unique name from its binary data.
        if (!move_uploaded_file(
                        $_FILES['upfile']['tmp_name'], sprintf('./uploads/%s.%s', $sha2 = sha1_file($_FILES['upfile']['tmp_name']), $ext
                        )
                )) {
            throw new RuntimeException('Failed to move uploaded file.');
        }


        echo 'File is uploaded successfully.';
    } catch (RuntimeException $e) {

        echo $e->getMessage();
    }
    $path = 'C:/wamp64/www/blog_management/uploads/' . $sha2 . ".jpg";
}
        echo 'File is uploaded successfully.';
    } catch (RuntimeException $e) {

        echo $e->getMessage();
    }
    $path = 'C:/wamp64/www/blog_management/uploads/' . $sha2 . ".jpg";
}

所以我想知道最好的方法是什么。或者有更好的方法来做到这一点吗?如何创建图像上传和管理系统?

0 个答案:

没有答案
相关问题