【发布时间】:2018-05-05 20:06:38
【问题描述】:
我以两种方式将图像从界面表单保存到MYSQL,一种方式我将图像编码为 Base64,第二种方式我按原样保存图像,但是当我获取图像时我得到损坏的图像。
使用 base64 的第一种方式:
...
if (isset($_POST['photo'])) {
$photo = $_POST['photo'];
$photoValue = base64_decode($photo);
$sql = "INSERT INTO students (photo) VALUES ('$photoValue')
....
当我将它显示为回显时,我得到了结果:
imagesjpon :echo base64_encode( $result['photo']); 和损坏的图像:cho '<img src="data:photo/jpeg;base64,'.base64_encode( $result['photo'] ).'"/><br/>';
当我保存图像而不将其编码为 base64 时的第二种方式:
...
if (isset($_POST['photo'])) {
$photo = $_POST['photo'];
$sql = "INSERT INTO students (photo) VALUES ('$photo ')
....
当我将其显示为回显时,我在界面上得到的结果:
aW1hZ2VzLmpwZw== 带有 :echo base64_encode( $result['photo']); 损坏的图像:cho '<img src="data:photo/jpeg;base64,'.base64_encode( $result['photo'] ).'"/><br/>';
但是,当我手动将图像上传到 mysql 时,当我获取此图像时出现了很好的问题,但问题非常大且使用速度很慢,当它是一张图像时,我得到的结果可以填满整个页面。 echo base64_encode( $result['photo']); 上的结果 IS: /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL ...
【问题讨论】:
-
你为什么不投我一票?
-
警告:您的代码容易受到 SQL 注入的影响。不要将数据与您的 SQL 连接,使用参数化查询。
-
另外,除非您知道您的文件将一直非常小,否则我强烈建议您将图片保存为文件,而不是保存在数据库中。这样,您甚至可以像提供任何常规文件一样为它们提供服务。
-
@jcaron 理解,但要将其保存为文件会在 mysql 中产生大尺寸,还有另一种方法可以将其保存为火,但尺寸会减小?
-
重点是:如果您将其保存为文件,它不会进入您的 MySQL 数据库。