【问题标题】:How to Upload images to mysql database Using PHP/Flex如何使用 PHP/Flex 将图像上传到 mysql 数据库
【发布时间】:2012-11-20 14:53:37
【问题描述】:

我已经在网上搜索了几个星期,但找不到解决我的问题的方法。

我正在使用Flex(front-end)PHP/MySql(Back-end) 开发一个Web 应用程序。

现在我想让用户为他们的个人资料图片上传图片...我正在将它们上传到服务器上的目录。现在我的老板“觉得”它们应该直接存储到数据库中,不仅存储图像的链接,还存储整个内容。

请帮助大家....我卡住了!!!

【问题讨论】:

  • 考虑这样做。在数据库中存储经常使用的图像有很多缺陷。例如 - caching。浏览器不会缓存被称为image.php?id=5423 的图像。当然还有数据库大小问题。如果图像很大,您将创建一个大型数据库,它的工作速度也会较慢,然后直接从文件系统调用图像。
  • 是的 Dainis 我确实考虑过...我以前使用文件系统,现在我的老板希望它存储在数据库中。
  • 如果您想保护您的图像不被窃取,您应该考虑这一点的唯一原因。但即便如此,也有更好的解决方案。我建议,你收集所有关于在数据库中存储图像的事实,并向你的老板证明,这样的举动是一个严重的错误,总的来说是错误的。
  • 我会这样做的 Dainis...非常感谢您

标签: php mysql apache-flex actionscript


【解决方案1】:

首先在您上传文件的表单中,您应该使用以下标签:

enctype="multipart/form-data" 

您还需要将该字段指定为以下之一:

TINYBLOB , 斑点 , 中块 , LONGBLOB

最后为您的数据库修改此代码即可:)

<?php
if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0)
{
   $fileName = $_FILES['userfile']['name'];
   $tmpName  = $_FILES['userfile']['tmp_name'];
   $fileSize = $_FILES['userfile']['size'];
   $fileType = $_FILES['userfile']['type'];

   $fp      = fopen($tmpName, 'r');
   $content = fread($fp, filesize($tmpName));
   $content = addslashes($content);
   fclose($fp);

if(!get_magic_quotes_gpc())
{
    $fileName = addslashes($fileName);
}

$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";

mysql_query($query) or die('Error, query failed'); 

} 

?>

【讨论】:

    【解决方案2】:

    通常,最好将图像存储在文件系统上(速度和大小)。为此,您可以将图像存储在“images/profiles/{userID}.jpg”等位置。如果您确实想将图像存储在数据库中,只需将列类型设置为blob 并将图像内容插入其中。 here 描述了一篇很好的文章,详细介绍了在 mysql 数据库中存储图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-07
      • 2013-07-17
      • 2015-01-01
      • 1970-01-01
      • 2011-04-21
      • 2015-09-18
      • 2016-05-26
      • 2019-10-30
      相关资源
      最近更新 更多