MySQL中的图像

Ani*_*nil 8 mysql

MySQL中是否有与图像相关的数据类型,可用于存储每条记录的图像.感谢您的帮助.

干杯! 阿尼尔

Chr*_*s R 8

你需要使用某种BLOB类型:

MySQL参考:BLOB和TEXT类型

您使用的是哪种类型取决于您要存储的图像的大小.


Fra*_*kie 8

就像之前说过blob的那样,是可行的方式,但是,正如SanHolo所指出的那样,它并不是真正的性能,你最终会遇到问题,因为你的数据库可以真正快速增长!

为什么不在数据库上索引文件名并将文件存储在服务器上

不允许这样的事情的主要原因是安全问题.如果您真的试图通过不允许所有用户查看或获取内容来覆盖您的基础,那么您有两种选择.

选项A)为文件提供一个独特的,不可识别的名称,如Flickr.该文件的名称包含两个哈希值.用户哈希和文件哈希.第二个哈希是秘密的,你可以得到它的唯一方法是通过反复试验.看看我在Flickr上的这个文件.用户保护(只有家人可以看到)但你可以很好地访问它,因为URL本身可以起到保护作用:http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg,即使你他们随机试图生成哈希并找到一个有效的哈希,它将被匿名隐藏,因为你不知道它是谁.

选项B)使用服务器端thecnology来限制访问.这种方法对服务器来说更安全但更昂贵.您将设置一个脚本,该脚本将允许/拒绝基于session_permissions或类似的东西访问该文件.查看以下通过访问以下内容调用的代码:

http://yourserver.com/getprotectedfile.php?filename=213333.jpeg

session_start();

// logic to verify the user is ok
if($_SESSION['user_access']!=true) {
    exit('user not allowed here');

// WATCHOUT! THIS IS NOT SECURE! EXAMPLE ONLY.
// on a production site you have to be sure that $filename will not point to a system file
$filename = $_GET['filename'];

// gets the file and outputs it to the user
header('Content-type: image/jpeg');
header('Content-Length: '.filesize($filename));
readfile($filename);
Run Code Online (Sandbox Code Playgroud)


Pas*_*cal 7

在性能方面,将文件作为文件存储在驱动器上并且只将文件名或文件路径以及mime类型写入数据库可能更好.但正如其他人所说,BLOB是你寻求的.


Mar*_*arz 2

尝试其中一种BLOB数据类型。