多个表单上传与图像在PHP mysql


multiple form upload with image in php mysql

我已经尝试了很长一段时间了。但我似乎做不到。我想有一个多图像上传表单,只使用一个输入值

if (isset($_POST['multi_fresh'])) {
    $path = '';
    $user_id = $_REQUEST['user_id'];
    $classification = $_REQUEST['classification'];
    $yield = $_REQUEST['yield'];
    $price = $_REQUEST['price'];
    $farm_name = $_REQUEST['farm_name'];
    foreach ($_FILES["farm_photo"]["tmp_name"] as $key => $tmp_name) {
        $cl = $classification[$key];
        $yl = $yield[$key];
        $pr = $price[$key];
        $fn = $farm_name[$key];
        $im = $img[$key];
        if (!empty($pr)) {
            $type = $im['type'];
            $size = $im['size'];
            $name = $im['name'];
            $tmp_path = $im['tmp_name'];
            $upload = $path . "images/farm/";
            if (($type == 'image/jpg' || $type == 'image/jpeg' || $type == 'image/png' || $type == 'image/gif') && $size < 5000000) {
                $ext = pathinfo($name, PATHINFO_EXTENSION);
                $farmimage = date('YmdHis') . "." . $ext;
                if (move_uploaded_file($tmp_path, $upload . $farmimage)) {
                    $insert = mysql_query("INSERT INTO user_multi_farm set user_id='" . mysql_real_escape_string($user_id) . "',classification='" . mysql_real_escape_string($cl) . "',yield='" . mysql_real_escape_string($yl) . "',price='" . mysql_real_escape_string($pr) . "',farm_name='" . mysql_real_escape_string($fn) . "',farm_photo='" . mysql_real_escape_string($farmimage) . "'") or die(mysql_error());
                    if ($insert) {
                        $sld_ins = "Add Sucessfully!";
                    } else {
                        $sld_err = "Check Corresponding Fields";
                    }
                }
            } else {
                $inserts = mysql_query("INSERT INTO user_multi_farm set user_id='" . mysql_real_escape_string($user_id) . "',classification='" . mysql_real_escape_string($cl) . "',yield='" . mysql_real_escape_string($yl) . "',price='" . mysql_real_escape_string($pr) . "',farm_name='" . mysql_real_escape_string($fn) . "'") or die(mysql_error());
                if ($inserts) {
                    $sld_ins = "Add Sucessfully!";
                } else {
                    $sld_err = "Check Corresponding Fields";
                }
            }
        }
    }

您只需要将multiple添加到您的<input>标记并给出名称数组[]语法:

<input type="file" name="imgs[]" multiple>
PHP文档有一个指南:上传多个文件

可以上传多个文件,使用不同的名称输入。

也可以同时上传多个文件,并将信息自动组织成数组。为此,您需要在HTML表单中使用与多次选择和复选框相同的数组提交语法:

PHP文档中的示例:

<form action="file-upload.php" method="post" enctype="multipart/form-data">
  Send these files:<br />
  <input name="userfile[]" type="file" /><br />
  <input name="userfile[]" type="file" /><br />
  <input type="submit" value="Send files" />
</form>


在PHP中访问文件

要访问在PHP中上传的多个文件,使用与单个上传相同的代码;内置的$_FILES Superglobal.

根据PHP文档$_FILES

通过HTTP POST方法上传到当前脚本的项的关联数组。这个数组的结构在POST方法uploads小节中有概述。

你应该能够像其他任何数组一样循环遍历这个关联数组:

foreach($_FILES["userfile"]["tmp_name"] as $key=>$tmp_name)
{
}