0

我有一个表单,用于提交包含图像的新帖子。如果用户没有选择要上传的图像,我不希望帖子继续向服务器和数据库提交数据。目前我所做的一切都是让代码继续处理表单。

这是我的一些代码:

//check if the submit button has been clicked
        if( isset( $_POST['submit'] ) ){

            //validate the title and description
            $title = validate_title($_POST['title']);
            $desc = validate_desc($_POST['desc']);

            //Get other posted variables
            $cat = $_POST['cat'];
            $year = $_POST['year'];

            if($title && $desc != false){

                //check if an image has been submitted
                if( $_FILES['files']['name'] != ""){...

我也尝试过使用以下方法,但是在没有选择文件时都不会停止代码:

if( $_FILES['files']['error'] == UPLOAD_ERR_OK){...

if( $_FILES['files']['name'] != UPLOAD_ERR_NO_FILE){...
4

4 回答 4

2

看起来您的文件输入名称是files[],在这种情况下 $_FILES["files"]["name"] 将是一个数组,以检查用户是否提供了要上传的图像尝试,

foreach ($_FILES['files']["error"] as $index => $error){
    if ($error == UPLOAD_ERR_NO_FILE){
        //no file was uploaded in $index`th file input 
    }
    else{
        //other checks and process $_FILES['files']['tmp_name'][$index]
    }
}
于 2012-06-04T19:20:09.837 回答
1

你应该检查一下bool is_uploaded_file ( string $filename )

示例,其中 user_file 是文件上传的子数组:

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
   // Success, file uploaded
}
else
{
   // Error, no file, invalid file, etc.
}
?>
于 2012-06-04T18:07:38.920 回答
1

我认为,这是处理所有上传文件的最佳过程,例如:

    // allowed extensions
$extensions = array('.png', '.gif', '.jpg', '.jpeg','.PNG', '.GIF', '.JPG', '.JPEG');

        if((!empty($_FILES["files"])) && ($_FILES['files']['error'] == 0)) {

            // check extension
            $extension = strrchr($_FILES['files']['name'], '.');
            if (!in_array($extension, $extensions)) {
                echo 'wrong file format, alowed only .png , .gif, .jpg, .jpeg';
            } else {
                // get file size
                $filesize = $_FILES['files']['size'];

                // check filesize
                if($filesize > $maxlimit){ 
                    echo "File size is too big.";
                } else if($filesize < 1){ 
                    echo "File size is empty.";
                } else {

                    // temporary file
                    $uploadedfile = $_FILES['files']['tmp_name'];
                }
            }
        }
于 2012-06-04T18:12:22.280 回答
1

如果您希望用户在没有选择任何图像时不能发送任何请求,您可以通过 java 脚本客户端来实现。当表单提交即将开始时,用户将收到错误消息。但请记住,用户可以轻松完成此验证。没有办法在客户端做到这一点,它是可靠的。最好在服务器端检查它,因为其他人已经回答了。

于 2012-06-04T18:15:24.697 回答