使用ajax post将图像从本地商店发送到mysql

Posted

技术标签:

【中文标题】使用ajax post将图像从本地商店发送到mysql【英文标题】:Send image from localstore to mysql with ajax post 【发布时间】:2014-06-04 12:02:42 【问题描述】:

我正在尝试使用 javascript 发送存储在 localstore 中的图片,但无法检索并显示它。

Javascript 部分:

liste['pic'] = localStorage['pic'];

            $.ajax(
                type: "POST",  
                url: "save.php",  
                data:  pic : liste['pic'] ,
                dataType: "json", 
                success: function(data) 
                    if(data) 
                        alert("Picture sent succesfully");
                    
                  
                );

接收数据的php部分:

require "lib/connect.php";
$pic = $_POST['pic'];
$insert_query = "INSERT INTO liste ( `pic` ) VALUES ( '".$pic."' );";
$result = mysql_query($insert_query);

显示图片的 php 部分。 表中有东西,但由于它是 blob ,我无法检查数据是否正确。

$select_query = "Select   `pic` From liste;";
$result = $dbhandle->query($select_query);

echo "<table border='1'>
<tr>
<th>Image</th>
</tr>";

while($row = mysqli_fetch_array($result))
  
  echo "<tr>";
  echo "<td><img src=\"" . $row['pic'] . "\" width=\"200\"/><br/><br/></td>";
  echo "</tr>";
  
echo "</table>";
$result->closeCursor();
mysqli_close($dbhandle);

从这里我得到一个损坏的图像。缺什么 ?文字有效,但图片无效,为什么?

【问题讨论】:

可能图像数据已损坏?您是否尝试过在发送 ajax 请求之前执行 base64_encode?从 db 检索数据时,您需要执行 base64_decode ... 您应该记录变量的每一步以查看它丢失的位置。在 ajax 之前的脚本中使用 console.log。 firephp,或 php 部分中的 file_put_contents,在 html 中,您只需查看页面源代码即可查看它在 img 标记中插入的内容。这至少应该让您知道问题出在哪里。 localStorage['pic'] 是图片路径还是图片blob数据路径? 【参考方案1】:

您需要知道的是,当您通过POST 发送以json 编码的值时,这些值不会出现在$_POST 变量中。

在 POST 变量中获取值的唯一方法是使用 application/x-www-form-urlencodedmultipart/form-data

如果您想使用其他内容类型,您实际上需要使用'php://input'

例如

$data = json_decode(file_get_contents('php://input'), true);
$text = print_r($data, true);

然后您应该会看到一个包含图像数据的数组。

【讨论】:

以上是关于使用ajax post将图像从本地商店发送到mysql的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 将图像发送到 PHP 文件?

无法使用 $.ajax( type: "POST", using VS2017 C# 将数据从 aspx 文件发送到代码后面

如何使用 Ajax 以数组格式将多个图像从 MVC 视图发送到控制器?

如何将图像文件和表单数据从 Ajax 传递到 MVC 控制器

Ajax 使用 POST 方法发送数据,但 PHP 函数不会将它们插入到表中

使用ajax在本地主机内将数据从客户端发送到客户端