上传图片无法正常工作

时间:2009-07-13 18:49:33

标签: php file-upload

我正在尝试编写一个可以上传多个文件的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”时,我发现变量具有以下值:(通过用echovar_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
        )
    )
)

我可以假设这意味着图像太大了吗?

2 个答案:

答案 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']