【问题标题】:File not uploading into database. Validation ok?文件未上传到数据库。验证好吗?
【发布时间】:2016-02-26 19:23:02
【问题描述】:

我有一个网站,用户可以从手机上传照片,但所有从手机上传的照片在上传时都向左显示 90 度。我解决了这个问题,但现在,在文件经过验证后,它不会进入数据库。请任何帮助..

分享脚本代码为:

<?php

    require('help.php');

    if(isset($_POST['submit'])){    
        $title = $_POST['title'];
        $content = $_POST['content'];
        $posted = $_POST['posted'];
        $date = date("Y-m-d H:i:s");
        $ip = $_SERVER["REMOTE_ADDR"];
        $rand = rand(1,1000000);

        if(empty($title)){
            echo "Titulli eshte bosh.";
        }else if(empty($content)){
            echo "Permbajtja eshte bosh.";
        }else if(empty($_FILES['file']['name'])){
            echo "Imazhi eshte bosh.";
        }else if($_FILES['file']['name']){
            $name = htmlspecialchars($_FILES['file']['name']);
            $ext = end((explode(".", $name)));
            $ext = strtolower($ext);

            //if no errors...
            if(!$_FILES['file']['error']){
                //now is the time to modify the future file name and validate the file
                $new_file_name = date('ymdHisu'). ".". $ext;

                if($_FILES['file']['size'] > (6144000)){
                  $valid_file = false;
                  echo 'Oops!  Your file\'s size is to large.';
                }
                elseif($ext !== "jpg" && $ext !== "png" && $ext !== "jpeg" && $ext != "gif" && $ext !== "bmp") {
                  $valid_file = false;
                  echo "Your file must be in jpg, jpeg, png, gif, or bmp formats.";
                }else{
                  $valid_file = true;
                }

                //if the file has passed the test
                if($valid_file){
                    //move it to where we want it to be
                    move_uploaded_file($_FILES['file']['tmp_name'], 'images/'.$new_file_name);

                    $exif_read = exif_read_data("images/".$new_file_name);

                    if(!empty($exif_read['Orientation'])){
                        $orientation_data = exif_read_data("images/".$new_file_name)['Orientation'];
                    }

                    if(isset($orientation_data) && $orientation_data !== 1){
                        $path = "images/". $new_file_name;
                        $buffer = ImageCreateFromJPEG($path);
                        $exif = exif_read_data($path);
                        if(!empty($exif['Orientation'])){
                            switch($exif['Orientation']){
                                case 8:
                                    $buffer = imagerotate($buffer,90,0);
                                    break;
                                case 3:
                                    $buffer = imagerotate($buffer,180,0);
                                    break;
                                case 6:
                                    $buffer = imagerotate($buffer,-90,0);
                                    break;
                            }
                            $image = imagejpeg($buffer, $path, 90);
                        }

                    }

                    if(empty($posted)){
                        $posted = 'Anonim';
                    }

                    $sql = "INSERT INTO problems(title, content, date, image, posted, ip) VALUES (:title, :content, :date, :image, :posted, :ip)";
                    $query = $db->prepare($sql);
                    $results = $query->execute(array(
                        ':title' => htmlentities ($title),
                        ':content' => htmlentities ($content),
                        ':date' => $date,
                        ':image' => $path,
                        ':posted' => htmlentities ($posted),
                        ':ip' => $ip
                    ));

                    echo "<div id='ok'>Lajmi u raportua me sukses. Kontrollojeni <a href='index.php'>ketu</a> .</div>";
                }
            }else{
                //set that to be the returned message
                echo 'Ooops!  Your upload triggered the following error:  '.$_FILES['file']['error'];
            }
        }

    }
?>

【问题讨论】:

  • 您想将整个图像上传到您的数据库中...?
  • 不,只有标题、描述和图像名称,所以我从站点中的图像文件夹访问它。
  • @albtr 看看我的回答。

标签: php html css pdo


【解决方案1】:

问题:

文件被验证后,它不会进入数据库。

解决方案

这是因为当您尝试将记录插入数据库时​​,您的 $path 未定义。将$path 变量移到if(isset($orientation_data) &amp;&amp; $orientation_data !== 1){ ... } 块之外,如下所示:

// your code

$path = "images/". $new_file_name;  // moved this outside of the if block
if(isset($orientation_data) && $orientation_data !== 1){  
    $buffer = ImageCreateFromJPEG($path);
    $exif = exif_read_data($path);
    if(!empty($exif['Orientation'])){
        switch($exif['Orientation']){
            case 8:
                $buffer = imagerotate($buffer,90,0);
                break;
            case 3:
                $buffer = imagerotate($buffer,180,0);
                break;
            case 6:
                $buffer = imagerotate($buffer,-90,0);
                break;
        }
        $image = imagejpeg($buffer, $path, 90);
    }

}

// your code

【讨论】:

  • 非常感谢。尊重@Rajdeep Paul
猜你喜欢
  • 2019-05-04
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 2011-07-07
  • 2016-11-07
  • 1970-01-01
相关资源
最近更新 更多