我在PHP中上传多个文件时遇到一些问题,
我有这个HTML格式:
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="myfile[]" />
<input type="submit" />
</form>
这是upload.php:
<?php print_r( $_FILES ); ?>
当我发送文件时,它会告诉我:
Array
(
[myfile] => Array
(
[name] => Array
(
[0] => Krw_Qe4QKmI.mp3
)
[type] => Array
(
[0] =>
)
[tmp_name] => Array
(
[0] =>
)
[error] => Array
(
[0] => 1
)
[size] => Array
(
[0] => 0
)
)
)
到目前为止一切顺利。
当我将表单升级到此表单时,问题就出现了:
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="myfile[]" />
<input type="file" name="myfile[]" />
<input type="submit" />
</form>
现在,当我发送2个文件时,它会告诉我:
Array
(
)
那么,这里有什么问题? 谢谢,Mor。
答案 0 :(得分:2)
我敢打赌你超过了post_max_size
而PHP只是忽略了上传的文件。
默认为8MB。如果您尝试上传一个5MB文件,一切都会正常工作。如果您尝试上传2个5MB文件,则超过8MB,PHP会忽略发布的数据。
尝试在php.ini中增加post_max_size的值。
答案 1 :(得分:1)
这里有很多建议。我会试一试。这是基于@Pekka的评论。
我看到你正在测试mp3,这可能超过PHP上传限制。这是因为在您的第一个示例中,您实际上有一个上传错误代码1:The uploaded file exceeds the upload_max_filesize directive in php.ini.
。所以即使你的拳头上传也无效。成功上传的错误代码始终为0。
使用upload_max_filesize = 10M
(或20M
或300M
修改php.ini;小心M
- 这意味着兆字节 - 省略,带来了很多头痛。
我建议使用较小的文件进行测试,因为我发现上传的限制为2M。
答案 2 :(得分:0)
检查您的max_file_uploads
设置 - 是否超过1?
echo ini_get('max_file_uploads');
答案 3 :(得分:0)
php.ini文件必须包含以下内容:
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = 50M
; Maximum number of files that can be uploaded via a single request
max_file_uploads = 20
更改upload_max_filesize
的值,然后重新启动服务器
答案 4 :(得分:0)
问题是您的输入元素上的name="myfile[]"
属性。
如果您没有标识符,则无法在以后将PHP引用到您的文件中。 PHP文档为您提供了相同的提示: http://www.php.net/manual/en/features.file-upload.multiple.php
可以使用不同的名称上传多个文件进行输入。
因此,将名称更改为“myfile1”和“myfile2”(或更好的名称;))可以解决您的问题。
答案 5 :(得分:0)
要一次执行多个文件,请尝试提供如下索引:
<? For ( $count = 0; count < SOME_MAXIMUM; ++$count; ): ?>
<input type="file" name="myfile[<? Echo $count; ?>]" />
<? endfor; ?>
答案 6 :(得分:0)
我遇到了同样的问题..我所有的努力都是徒劳的,但最后我在PHP手册上找到了一个很好的说明。这很简单但很适合我...
“如果您使用表格显示您的内容,则多次上传可能无效 当
<form>
元素<table>
元素时,表单输入。在这 case 只会上传第一个文件。将
<form>
元素放在元素之外,以使其正常工作。“
请点击此链接查看完整备注,有一个功能可以以易于使用的方式重新排列多个上传文件阵列。