0

我需要存储一个预先加载在 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

杨瑜珈

4

2 回答 2

1

首先,您需要设置您的 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 连接,完成后关闭它。

希望能帮助到你。

亲切的问候

于 2013-03-28T13:47:22.807 回答
0

最后我找到了解决方案。

这是我必须用来将图像正确保存到 MySQL 的代码。

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

同样,如果我们想将文件保存到服务器,我们可以在 PHP 中使用以下代码

$myid = fopen($filesavepath.$imgfilename,'wb');
$svgimg=$_REQUEST['svgimg'];
fputs($myid, base64_decode(substr($_POST['myImg'], 22)));
fclose($myid);

希望这可以帮助某人。

杨瑜珈

于 2013-04-10T15:00:10.340 回答