mysql - 如何使用 PHP 在 mySQL 中存储表单中预加载的图像

标签 mysql image binary-data

我需要存储一个以表单形式预加载到 MySQL 数据库中的 blob 文件中的图像。

这是表单代码:

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
  <table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td>Image Name</td>
      <td><input type="text" name="imgName" id="imgName" /></td>
    </tr>
    <tr>
      <td>Image</td>
      <td><input type="image" name="myImg" id="myImg" src="images/1209894_11404408.jpg" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2" align="center" valign="middle"><input type="submit" name="Submit" id="Submit" value="Submit" /></td>
    </tr>
  </table>
  <input type="hidden" name="MM_insert" value="form1" />
</form>

这是表结构创建语句。我正在使用 InnoDB:

CREATE TABLE IF NOT EXISTS `img` (
  `img_id` int(11) NOT NULL AUTO_INCREMENT,
  `img_name` varchar(200) DEFAULT NULL,
  `img_img` longblob,
  PRIMARY KEY (`img_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

我使用的插入查询是:

INSERT INTO img (img_name, img_img) VALUES ('$_POST['imgName']', '$_POST['myImg']')

TIA

杨瑜

最佳答案

首先,您需要设置 html 表单以支持文件上传,允许这样做的正确表单标记是:

<form enctype="multipart/form-data" id="form1" name="form1" action="<?php echo $editFormAction; ?>" method="post">

处理上传表单的 PHP 脚本将类似于:

if (isset($_FILES['myImg']) && $_FILES['myImg']['size'] > 0) {
  $tmpName = $_FILES['myImg']['tmp_name'];
  $fp = fopen($tmpName, 'r');
  $data = fread($fp, filesize($tmpName));
  $data = addslashes($data);
  fclose($fp);

  //Fill all the other form vars

  $query = "INSERT INTO img ";
  $query .= "(img_img) VALUES ('$data')";
  $results = mysql_query($query, $link);
 }

当然你需要先打开MySQL连接,完成后关闭它。

希望有帮助。

亲切的问候

关于mysql - 如何使用 PHP 在 mySQL 中存储表单中预加载的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15683372/

相关文章:

swift - UIImage 在 segue 推送时返回 nil

mysql - 查找触发触发器的查询

mysql - 运行 mySQL 语句不会返回任何结果

sql - 如何重新编号主索引

php - 保存到数据库时避免冲突的事情

image - 较大的 SVG 比较小的 SVG 质量更好?

Django-oscar 产品图片错误

sql - SQL中二进制字符串的汉明距离

java - Java 如何将二进制数据输出到文件?

java - 使用二进制数据对 java servlet 进行单元测试