我正在尝试编写一个可以上传多个文件的PHP脚本。
for($i=0;$i<count($_FILES['uploadimg']['name']);$i++){
$name = $_FILES['uploadimg']['name'][$i];
$type = $_FILES['uploadimg']['type'][$i];
$filepath = $_FILES['uploadimg']['tmp_name'][$i];
$size = getimagesize($filepath);
$img = file_get_contents($filepath);
//insert into database
}
问题在于变量没有以他们应该的方式填充。
当我上传jpeg“image.jpg”时,我发现变量具有以下值:(通过用echo
和var_export
替换数据库代码)
$name = 'image.jpg'; // good
$type = ''; // not good
$filepath = ''; // not good
$size = false; // not good
$img = false; // not good
我应该注意到,我发现$size
和$img
依赖$filepath
作为有效的文件路径。
任何人都可以提供一些有关错误或缺少的信息吗?我现在已经玩了一天的代码了,并且无法提出解决方案。
更新
3张图片上的 print_r($_FILES)
返回:
Array (
[uploadimg] => Array (
[name] => Array (
[0] => test1.jpg
[1] => test2.jpg
[2] => test3.jpg
)
[type] => Array (
[0] => image/jpeg
[1] =>
[2] => image/jpeg
)
[tmp_name] => Array (
[0] => /tmp/phpkC6f2F
[1] =>
[2] => /tmp/phpgFrPl8
)
[error] => Array (
[0] => 0
[1] => 1
[2] => 0
)
[size] => Array (
[0] => 238906
[1] => 0
[2] => 237308
)
)
)
我可以假设这意味着图像太大了吗?
答案 0 :(得分:2)
This question / answer可能有所帮助。
修改 - 这看起来像文件大小问题。这两个文件都有大约1.8 Mb的大小,默认情况下PHP的文件上传限制为2 Mb。我只能从Windows的角度给你建议,但我会在 PHP.ini 中查找增加 upload_max_filesize
也许 post_max_size settings
。
编辑2 - PHP.net上有一个lists the error codes for uploading部分。你得到的是1:
UPLOAD_ERR_INI_SIZE
Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.
这符合我在第一次编辑中所说的内容。
答案 1 :(得分:1)
所有这些文件都是同一类型吗?上传几个文件后,你能给我们一个var_dump
变量吗?所有上传的变量都是空的还是只有一些?
例如,此代码:
<?php
print_r($_FILES);
?>
<html><body>
<form action="test.php" method="post" enctype="multipart/form-data">
<input name="upload[]" type="file" /><br />
<input name="upload[]" type="file" /><br />
<input name="upload[]" type="file" /><br />
<input type="submit" value="Upload" />
</form>
</body></html>
返回此输出:
Array (
[upload] => Array (
[name] => Array (
[0] => IMG_0005.jpg
[1] => IMG_0249.jpg
[2] => IMG_0007.JPG
)
(...snip...)
[size] => Array (
[0] => 1776529
[1] => 1902522
[2] => 798008
)
)
)
请务必检查每个文件的$_FILES['name']['error']
。