请指导我如何通过PHP将图像上传到mySql数据库

时间:2011-02-04 08:22:59

标签: php mysql

请指导我如何通过PHP在MySql数据库中上传图像。 我只有几天的PHP经验。 我可以使用任何方法意味着将文件保存在目录中并在数据库中保存它的路径,或者将整个图像保存在数据库中。

如果你能提供一些代码或链接来推荐,我将感谢你。 我已经关注了一些链接,但那些都是错误的。

6 个答案:

答案 0 :(得分:3)

我建议你在MySQL中避免这种情况,因为这个数据库引擎缺少一个好的SQL二进制附加聚合函数。

这意味着如果您要将大图像保存到MySQL,您需要在一次旅行中上传它们,这非常糟糕,因为如果您的图像大小为-fe- 8MB,则需要8MB您的服务器中的RAM,可能,PHP请求将超时,因为上传,然后保存到数据库,可能需要几秒钟。

如果你的图像是1-2MB那么这样做,无论如何它可能是一个糟糕的方法。二进制文件应该以块的形式上传,以便尽可能减少内存,因为网页应该在共享主机中工作,但我不知道这是你的情况还是你是专用的,但无论如何,再次,你将浪费资源而不用上传 - 这在MySQL中很难用于大文件 - 。

在一天结束时,更好地存储对文件的引用,或者使用允许我们使用图像标识符(数据库中的ID列)的约定来让PHP脚本在某个文件夹中找到图像。

答案 1 :(得分:2)

我会给你一些可能对你有用的关键词:

  • BLOB(将图像数据存储在数据库中)
  • move_uploaded_file()(将图像数据存储在文件系统中)
  • $_FILES(用PHP访问上传的文件)

答案 2 :(得分:2)

您不应将图像存储在数据库中。您应该只存储对光盘上位置的引用。

此处也解释了这一点:Storing Images in DB - Yea or Nay?

答案 3 :(得分:1)

仅供参考,将图像存储在数据库中是一种不好的做法。

最好将图像存储在文件夹中,而不是存储在mysql数据库中。 请参阅image upload

只需将图像上传到文件夹,然后将其相对路径保存到数据库中。

答案 4 :(得分:0)

这会将图像插入目录中,图像名称将存储在数据库中 希望这能帮助你开始

<form name="aaa" method="post" enctype="multipart/form-data">
<input type="file" name="image">
<input type="submit" name="submit">
</form>

<?php 
if(isset($_POST['submit'])) {

//添加自己的图片名称     $ name = $ _FILES ['image'] ['name'];     $ extension = strrchr($ name,'。');     $ image_name =“whatever_you_put”。$ extension;

move_uploaded_file($_POST['image']['tmp_name'],"/image/".$image_name) //where image is a directory where image will be uploaded
mysql_query("insert into table_name VALUES ('".$image_name."')");
}

答案 5 :(得分:0)

你应该使用file_get_contents()函数并将结果插入到表的BLOB字段中