提交后,多部分表单$ _FILES数组为空,但文件上传

时间:2012-09-06 06:47:49

标签: php arrays file-upload multipartform-data

我有一个多部分表单,我允许用户选择多个放在数组中的文件。这是我的代码的缩小部分:

<form id="fileupload" action="upload.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple>
</form>

在我的 upload.php 文件中,我想写一个文本文件并从每个文件中放置信息(无论格式如何,数组都没问题。)

$date = $_POST["date"];
$files = $_POST["files"];


$myFile = $date . ".txt";
$fh = fopen($myFile, 'w') or die("cant_open_file");
$stringData = "Date: " . $date . "\n";
$stringData .= "Uploaded Files:\n";
$stringData .=  $file; // prints nothing?
fwrite($fh, $stringData);
fclose($fh);

然而, $file 什么都不打印。

问题

如何将从用户中选择的每个文件的文件信息打印到我的文本文件中?

期望的输出

Date: Todays Date
Files: 2 file(s)
    File: someimage1.png
    Size: 10KB

    File: someimage1.png
    Size: 20KB

更新

出于某种原因, $_FILES['files'] 在提交时为空,但是当我使用上述示例时,“文件:”和“尺寸:”打印出来,但 $file['name'] $file['size'] 似乎是空白的。另外,假设我选择3个文件,“文件/大小”打印5次(建议选择5个文件)。对于所选的任何文件数量,这都是相同的。我已经确保正确的值也在 php.ini 中。不知道从哪里开始。

foreach($files as $file){
    $stringData .=  "   File: ".$file['name']."\n"; // return blank
    $stringData .=  "   Size: ".$file['size']."\n"; // return blank
}

另外,我正在使用jQuery File Upload Demo

4 个答案:

答案 0 :(得分:4)

使用$files = $_FILES["files"];获取上传的文件信息。

POST method uploads

答案 1 :(得分:1)

您可以在$_FILES数组中使用循环:

foreach($files as $file){
    $stringData .=  "File: ".$file['name']."\n";
    $stringData .=  "Size: ".$file['size']."\n";
}

请确保您使用move_uploaded_file(),因为您只将它们存储在/tmp文件夹中,您将丢失它们。

答案 2 :(得分:1)

使用

$files = $_FILES['files'];

echo "<pre>";
print_r($files);

而不是

$files = $_POST["files"];

答案 3 :(得分:1)

请尝试使用$_FILES,而不是$_POST['files']

print_r($ _ FILES ['files'])