php 上載圖片壓縮再存入數據庫?

if($_FILES['myFile_cover']['size']!='')
    {
        unlink('ourstory/'.$addfirstROW['id'].'.jpg');
        unlink('ourstory/'.$addfirstROW['id'].'.JPG');
        unlink('ourstory/'.$addfirstROW['id'].'.png');
        unlink('ourstory/'.$addfirstROW['id'].'.PNG');
        unlink('ourstory/'.$addfirstROW['id'].'.jpeg');
        unlink('ourstory/'.$addfirstROW['id'].'.JPEG');
        $target_dir = "ourstory/";
        $target_file = $target_dir . basename($_FILES["myFile_cover"]["name"]);
        $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
        $imagename = $addfirstROW['id'] . '.' . $imageFileType;
        $destination = $target_dir . $imagename;


        if(move_uploaded_file($_FILES["myFile_cover"]["tmp_name"], $destination))
        {
            $SQL = mysql_query("UPDATE `x` SET `x` = '".$destination."' WHERE `id` = id ");
        }
    }

如何將這個程式加入直接壓縮圖片?再存入database?

阅读 3.3k
5 个回答
CREATE TABLE `upload` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `type` varchar(20) NOT NULL,
  `data` mediumblob NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
<?php
if ($_FILES["file"]["error"] > 0)
{
    echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
    $type = $_FILES["file"]["type"];
    $size = $_FILES['file']['size'];
    $tmp=$_FILES["file"]["tmp_name"];
    $fp = fopen($tmp,'rb');
    $data = bin2hex(fread($fp,$size));
    $dsn='mysql:host=localhost;dbname=test';
    echo '<pre>';
    try{
        $pdo = new PDO($dsn,'root','root');
        $pdo->exec("INSERT INTO `upload`(`type`,`data`) values ('$type',0x$data)");
        $id = $pdo->lastInsertId();
        echo 'upload success!<a href="view.php?id='.$id.'">View</a>';
        $pdo = null;
    }catch (PDOException $e){
        echo $e->getMessage();
    }
    echo '</pre>';
    fclose($fp);
}

压缩的话可以试用php的gzip系列函数进行压缩。然后再入库。出库的时候先解压

文件图片上传、
应该是文件上传后放置在某个文件夹,然后取得路径,再把路径写入数据库
直接存到数据库会有问题,图片的编码解码很耗资源。

数据库只存图片路径

数据库保存图片二进制不可取,磁盘IO是比较慢的!一般的做法是把上传后的图片路径保存到数据库,考虑性能的话,可以购买cdn服务

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题