【问题标题】:Need to add photo upload to my existing script for mySQL需要将照片上传添加到我现有的 mySQL 脚本
【发布时间】:2012-05-08 23:54:22
【问题描述】:

我需要为我插入到 mySQL 的每条记录上传一张照片。我已经制作了一个基本的插入脚本。我将如何修改我现有的脚本,以便我可以在每个记录插入中包含一个图像。图像可以是任何形状或大小。很简单。我为照片简化了表格。任何帮助将不胜感激。

我在根目录中为照片创建了一个文件夹,名为:“photos”。

<?
$order = "INSERT INTO reg_add (connect_date, 
   reg, 
   first_name, 
   last_name)

VALUES

('$_POST[connect_date]', 
     '{$_POST[reg]}nv', 
     '$_POST[first_name]', 
     '$_POST[last_name]')";

$new_image = 'photos/'.basename( $_FILES['image']['name']);
    if(move_uploaded_file($_FILES['image']['tmp_name'], $new_image)) {
        // The images was uploaded
  } else{
header("location: reg_add_fail_IMAGE.php"); 
}

$result = mysql_query($order);
?>

表格:

<form id="form_register" method="POST" action="reg_add.php">

   <input class="req-string bx short" type="text" name="connect_date" id="connect_date">
   <input type="hidden" name="MAX_FILE_SIZE" value="100000">
   <input class="req-string bx long caps" type="text" name="reg" id="reg">
   <input class="req-string bx long" type="text" name="first_name">
   <input class="bx long" type="text" name="last_name">

   Choose a image to upload: <input name="image" type="file">
   <input id="rbSubmit" class="rb2 rbSubmit" type="submit" value="submit">
</form>

【问题讨论】:

  • 老实说,我不知道从哪里开始。
  • 尝试谷歌搜索:php 文件上传。提示:textareas 不会帮助您上传文件。
  • Google 怎么样?还是右侧的相关问题大列表?
  • 什么样的照片?对于每个上传的用户来说,它会是同一张照片吗?我看到它已注册,您是否要创建默认用户图像?

标签: php mysql image upload blob


【解决方案1】:

首先,你不能使用&lt;textarea&gt;上传图片

HTML

<form action="savedata.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a image to upload: <input name="image" type="file" /><br />
    <input type="submit" value="Submit" />
</form>

请注意,包含enctype="multipart/form-data 很重要,这样图片才能与表单一起发送。

PHP 当带有 FILE 的表单被发送到 PHP 脚本时,该文件存储在服务器上的临时位置,并且变量 $_FILE 可用。这个变量保存了这个文件的信息,临时名和真实名,大小等等。

你需要做的就是将上传的图片移动到你想要放置的目录:

// This will be the location for the image
$new_image = 'photos/'.basename( $_FILES['image']['name']);

if(move_uploaded_file($_FILES['image']['tmp_name'], $new_image)) {
   // The images was uploaded
} else{
    // The image failed to upload
}

现在您可以将$new_image 保存到数据库中,以供参考图像位置。

您应该考虑的几件事

  • 检查是否存在同名的文件
  • 如果每个数据库行最多有 1 个图像,您可以使用数据库中的 ID INSERT 命名图像为此,您需要先插入数据,然后立即使用 $id = mysql_insert_id(); 获取最后一个插入 ID INSERT 查询。然后将其合并到变量 `$new_image'

【讨论】:

  • 为什么这个答案被否决了?这不是你要求的吗?
  • 我需要在 mySQL 中创建一个 blob?我叫它“new_image”吗
  • 哎呀。我称之为“图像”。上传工作。现在我需要看到它。试图弄清楚如何看到它。
  • 如果将图像存储在文件系统中,为什么要在数据库中创建BLOB? BLOB 用于存储二进制数据,如文件或其他东西,但将文件存储在数据库中不是一个好习惯,它们属于文件系统。您应该创建一个新的VARCHAR 并将图像的文件名存储在那里。跨度>
猜你喜欢
  • 2014-07-14
  • 1970-01-01
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2015-06-05
  • 2011-03-08
相关资源
最近更新 更多