【问题标题】:I am so confused with uploading files in PHP我对用 PHP 上传文件感到很困惑
【发布时间】:2011-05-03 13:05:46
【问题描述】:

我尝试阅读多个教程、PHP 文档,但不知道自己在做什么。

这是我的表格

<form action="beta_upload.php" enctype="multipart/form-data" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="20971520" /><!-- 20 Meg -->
<input type="file" name="file[]" />
<input type="file" name="file[]" />
<input type="file" name="file[]" />
<input type="submit" value="submit" name="submit" />
</form>

现在当我把它发送到这里时:

<?php 
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$name = trim($_POST['name']);
$email = trim($_POST['email']);

$username = preg_replace('/[^(\x20-\x7F)]*/','', $username);
$password = preg_replace('/[^(\x20-\x7F)]*/','', $password);
$name = preg_replace('/[^(\x20-\x7F)]*/','', $name);
$email = preg_replace('/[^(\x20-\x7F)]*/','', $email);

$upload_dir = '/beta_images/';

print_r($_FILES);

foreach ($_FILES['files']['error'] as $key => $error) {

    if($error == UPLOAD_ERR_OK) {

    $check_name = $_FILES['files']['name'];

    $filetype = checkfiletype($check_name, 'jpg,jpeg');

        $temp_name = $_FILES['files']['tmp_name'][$key];
        $image_name = 'image_' . $name . '1';
        move_uploaded_file($tmp_name, $upload_dir . $image_name); 

    }

}

它带回来了

Warning: Invalid argument supplied for foreach() in /blabla on line 18

我不太了解 foreachs,当我 print_r 数组时,它对我一点帮助都没有。

有人能帮帮我吗?

谢谢。

【问题讨论】:

  • $_FILES['files'] 必须是$_FILES['file']
  • @pekka 是的 - 或者 &lt;input type="file" name="file[]" /&gt; 需要是 &lt;input type="file" name="files[]" /&gt;

标签: php forms upload input


【解决方案1】:

您最好按照本教程进行操作:http://www.w3schools.com/php/php_file_upload.asp

foreach ($_FILES['file'] as $file) {

    if($file['error'] == UPLOAD_ERR_OK) {

        $check_name = $file['name'];

        // I assume you have to use the file type here, not name
        $filetype = checkfiletype($file['type'], 'jpg,jpeg');

        $temp_name = $file['tmp_name'];
        $image_name = 'image_' . $file['name'] . '1';
        move_uploaded_file($tmp_name, $upload_dir . $image_name); 

    }

}

您的文件位于 $_FILES['files'] 中,因此使用 foreach 您必须检查每个元素/文件并获取其数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2011-12-02
    • 2016-11-18
    • 1970-01-01
    相关资源
    最近更新 更多