【问题标题】:<input type="file" accept="image/*;capture=camera"> save image to database using php<input type="file" accept="image/*;capture=camera"> 使用 php 将图像保存到数据库
【发布时间】:2016-10-29 01:46:46
【问题描述】:

我有一个移动网络应用程序表单,我可以在其中访问移动设备相机并拍摄照片以及在表单的其他字段中捕获的一些其他详细信息。使用 php 我将表单中捕获的信息成功保存到 mysql 数据库中,但未存储图像。我已经搜索了一个解决方案,但在使用 php 时找不到任何东西

<input type="file" accept="image/*;capture=camera"> 

将图像存储在数据库中。数据库字段当前是 blob,但可以根据需要进行更改。

该表单适用于所有其他数据,因此问题在于我对如何使用 php.ini 处理图像或文件缺乏了解。任何人都可以帮助或指出我正确的方向。我的代码的基础贴在下面。

当 bus_name 输入保存到数据库时,表单保存工作正常,但 bus_img 记录为空白。

HTML

<div data-role="page" id="view_record">
  <div data-role="header">
    <a href="#" data-rel="back" class="ui-btn-right ui-btn  ui-btn-icon-notext ui-corner-all ui-icon-back">Back</a>
  <div data-role="main" class="ui-content">
    <form method="post" enctype="multipart/form-data" action="saveRecord.php">
      <label for="bus_name">Business Name:</label>
      <input type="text" name="bus_name" id="bus_name" placeholder="Enter Business Name">

      <label for="bus_type">Business Type:</label>
      <input type="text" name="bus_type" id="bus_type" placeholder="Enter Business Type">

      <label for="bus_tel">Business Tel:</label>
      <input type="text" name="bus_tel" id="bus_tel" placeholder="Enter Business Tel No">

      <label for="bus_img">Business Photo:</label>
      <input type="file" name="bus_img" id="bus_img" accept="image/*;capture=camera">

      <label for="comments">Comments:</label>
      <textarea name="comments" id="comments" placeholder="Enter Comments"></textarea>

      <input type="submit" value="Submit">    
    </form>
  </div>
  </div>
</div>

PHP

<?php
$bus_img = $bus_name = "";

$servername = "";
$username = "";
$password = "";
$dbname = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    if (!$conn) 
    {
        die("Connection failed: " . mysqli_connect_error());}   

    $bus_img = $_FILES["bus_img"];
    $bus_img = mysqli_real_escape_string($conn, $bus_img);
    $bus_name = $_POST["bus_name"]; 

    $sql = "INSERT INTO tblLead(leadImage, occupantName)

    VALUES ('$bus_img','$bus_name')";

    if (mysqli_query($conn, $sql))
    {       
    } else 
    {
        echo "Error: " . $sql . mysqli_error($conn);
    }   
    mysqli_close($conn);
    exit();     
}
?>

非常感谢任何帮助。谢谢

【问题讨论】:

  • 不要粗鲁,但如果您找不到关于如何使用 PHP 存储图像的任何内容,那么您实际上并没有做太多搜索。
  • 在 stackoverflow 中搜索 使用 php 将图像保存到数据库
  • 你在哪里有上传 JS 把你的图片放到某个目录?如果您有它,请检查图像是否正在上传。如果正在上传,那么我们可以进一步帮助您关闭它。
  • PHP File Upload的可能重复
  • 我在 js 或 php 方面没有经验,但可以通过因此要求引导...我没有 js - 你能解释一下我需要在伪代码中采取的步骤吗?指点我一个教程 - 我显然有一些学习要做

标签: php html mysql


【解决方案1】:

首先,文件处理需要$_FILES 而不是$_POST

您的表单标签不包含处理文件的正确编码类型。

按照手册中关于文件处理的示例:

<form enctype="multipart/form-data" action="__URL__" method="POST">

参考:

然后您需要转义该(文件)数据,有几种方法可以做到这一点。

其中一个是mysqli_real_escape_string($conn, $file)

参考:

您还应该对所有数据使用一些东西,因为它目前对 SQL 注入开放。

即并通过替换:

$bus_img = $_POST["bus_img"];

与:

$bus_img = $_FILES["bus_img"];
$bus_img = mysqli_real_escape_string($conn, $bus_img);

并确保文件不超过服务器上允许/设置的最大上传大小。

也使用适当的错误检查。

【讨论】:

  • 谢谢,我已经对我的代码进行了建议的修改(在帖子中也进行了修改),测试没有成功 - 上面提到的上传文件是什么 - 我需要这样做吗首先,将文件保存到我设备上的文件夹中?一旦文件处理部分正常工作,我将添加所有错误处理等 - 我明白这一点,尽管指出:-)
  • 抱歉,需要阅读您在文件上传时发布的参考资料 - 现在可以阅读
猜你喜欢
  • 2014-07-17
  • 2014-01-30
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 2013-10-07
相关资源
最近更新 更多