【问题标题】:how to upload multiple image file in one transaction using php and mysqli?如何使用 php 和 mysqli 在一个事务中上传多个图像文件?
【发布时间】:2016-09-21 23:14:15
【问题描述】:

我尝试在每个事务中在数据库中插入多个图像,但每个图像都有自己的输入类型。但是当我提交表单时,我收到我的 $file_upload = $_FILES['file_upload'.$i]; from my post.php is an "undefined index" 的错误。我的 HTML 中的 file-upload1file-upload2file-upload3 不是正确的方法吗?请帮忙。谢谢。

我的php代码是:

include 'dbcontroller.php';
if(isset($_POST['submit'])) {
    for ($i = 1; $i <= 3; $i++) {
        $file_upload = $_FILES['file_upload'.$i];

        $file=(rand(1000,100000)."-".$file_upload['name'.$i]);
        $type=$file_upload['type'.$i];
        $size=$file_upload['size'.$i];
        $loc=$file_upload['tmp_name'.$i];

        $new_size=$size/1024; // file size in KB

        // make file name in lower case
        $new_file_name = strtolower($file);
        // make file name in lower case

        $final_file=str_replace(' ','-',$new_file_name);

        if(move_uploaded_file($loc, '..admin/officers-avatars/'.$final_file)) {
            $result = mysqli_query($conn,"INSERT INTO images VALUES ('$final_file', '$new_size', '$type')")
            or die(mysqli_error($conn));
        }
    }
}

下面是我的 HTML

<form action="post.php" method="post" enctype="multiple/form-data">
	<input type="file" name="file-upload1" /><br><br>
	<input type="file" name="file-upload2" /><br><br>
	<input type="file" name="file-upload3" /><br><br>

	<input type="submit" name="submit" value="SAVE"/>
</form>

【问题讨论】:

  • 您是否在$_FILES 上进行了var_dump() 以查看实际情况?
  • 不,我没有。并且之前没有尝试过var_dump,但我会试一试。 @EatPeanutButter
  • 做到了。我得到了一个 NULL 。我们@EatPeanutButter
  • 这意味着您的文件没有正确上传到服务器。如果@filippe 的建议不起作用,请查看以下可能出错的清单:stackoverflow.com/questions/3586919/…
  • 谢谢。该链接实际上帮助了我。 @EatPeanutButter

标签: php html mysqli input-type-file


【解决方案1】:

您有一个错字:将enctype="multiple/form-data" 更改为enctype="multipart/form-data"

无论如何,我建议您在name 属性中使用数组:

<form action="post.php" method="post" enctype="multipart/form-data">
    <input type="file" name="fileupload[]" /><br><br>
    <input type="file" name="fileupload[]" /><br><br>
    <input type="file" name="fileupload[]" /><br><br>

    <input type="submit" name="submit" value="SAVE"/>
</form>

然后在 PHP 中你使用这个:

foreach($_FILES['fileupload'] as $file) {
    ....
}

或者你可以使用多个:

<input type="file" name="fileupload[]" multiple /><br><br>

【讨论】:

  • 我建议使用&lt;input type="file" name="fileupload[]" multiple /&gt;,但要小心您允许您的用户直接上传到您的数据库中的内容,您可能会将一些有害病毒上传到您的网站上,并且不知道它们是如何或从哪里来的.
  • 另外,检查 enctype 部分。你需要使用multipart 而不是multiple
  • 我尝试了您的代码,但出现错误。 Notice: Undefined index: fileuploadWarning: Invalid argument supplied for foreach() 都在同一行。并感谢您注意到我的拼写错误:)
  • 我找到了我遇到的确切错误,只是我的 HTML 中的文件名与我的 php 不同,这就是我收到未定义错误的原因。修复它并现在工作。您的回答很有用,谢谢。
猜你喜欢
  • 1970-01-01
  • 2018-06-03
  • 2022-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
相关资源
最近更新 更多