上传多个图片,PHP

时间:2012-03-19 14:51:44

标签: php input

我需要修改图片上传表单,这样我就可以上传多张图片(确切地说是6张图片)。我已经尝试添加另一个输入并按照其他人的建议更改名称值,但它仍然显示从第一个输入复制的相同图像。我知道这可能很简单,但我不是PHP开发人员,所以我找不到解决方案。

以下是上传图片的代码:

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') {
        $tempext = explode('.', $_FILES['image']['name']);
        $tempext = strtolower($tempext[count($tempext) - 1]);
        switch($tempext) {
            case 'jpg':
            case 'jpeg':
                $ext = '.jpg';
                break;
            default:
                $ext = false;
        }

        if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) {
            $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no';
        } else {
            $imagesuccess = 'no';
        }
    }

输入:

<div class="control-container<?php if((isset($_FILES['image']) && !empty($_FILES['image']['name']))) echo ' error'; ?>">
            <label for="image">Large Image</label>
            <div class="multifield">
                <?php 
                if(file_exists($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . '.jpg')) {
                    echo '<img src="/img/profiles/' . $id . '.jpg?' . rand() . '" width="310px" />';
                }
                ?>
                <input type="file" name="image" id="image" />
            </div>
</div>

非常感谢任何帮助。

由于

5 个答案:

答案 0 :(得分:4)

您需要有多个输入字段:

<input type="file" name="image1" />
<input type="file" name="image2" />
etc...

并使用以下方式访问每个文件:

$_FILES['image1'][...]
$_FILES['image2'][...]
etc...

或者您可以使用特定于PHP的数组表示法快捷方式:

<input type="file" name="image[]" />
<input type="file" name="image[]" />

$_FILES['image']['tmp_name'][0];
$_FILES['image']['tmp_name'][1];
etc...

请注意,在使用数组表示法时,PHP会使files数组中的每个单独的数据点成为自己的数组。不是将文件的数据集中在一个arra中,而是将每个单独的位分散在多个阵列中。

答案 1 :(得分:2)

如果表单中有6个文件输入,$ _FILES应该在其中包含一个数组。在处理文件中使用print_r($_FILES)进行检查。

答案 2 :(得分:0)

如果您需要上传更多该文件,只需更改name元素即可。例如,您可以使用JavaScript添加其他输入字段。每个元素都有一个name="images[]",提交后您可以看到var_dump( $_FILES )得到的内容。

答案 3 :(得分:0)

上传多张图片的基本代码段:

<html>
<?php
define("UPLOAD_DIR", "/path/to/uploads/");

for ($i = 0; $i < count($_FILES["file"]["tmp_name"]); $i++) {
  if (is_uploaded_file($_FILES["file"]["tmp_name"][$i])) {
      move_uploaded_file($_FILES["file"]["tmp_name"][$i], UPLOAD_DIR . $_FILES["file"]["name"][$i]);
  }
}
?>
<body>
  <form method="post" enctype="multipart/form-data">
    <input name="file[]" type="file" /><br />
    <input name="file[]" type="file" /><br />
    <input name="file[]" type="file" /><br />
    <input type="submit" />
  </form>
</body>
</html>

答案 4 :(得分:0)

@Ryan我认为你的问题可能在html部分内部,为什么不使用单个输入,你可以做什么,例如

<form method="post" enctype="multipart/form-data">
    <input name="file[]" type="file" multiple="true"><br />
    <input type="submit" />
  </form>