PHP文件上传缺少tmp_name

时间:2015-03-09 16:16:46

标签: php apache xampp

我下载并安装了xampp for windows。当我尝试将图片,视频或音乐上传到我在localhost的php时,我只得到$ _FILE [' some_file'] [name]我没有[size],[type],[error]和最重要的到我的[tmp_name]。但是当我尝试上传一些.rar文件或某些文档时,我得到了所有这些文件信息。以下是我尝试上传某些音乐文件时的内容:

    Array
(
    [name] => Array
        (
            [0] => Blondee – Moment (Original Mix) www.livingelectro.com.mp3
            [1] => Eli & Fur – Turn The Lights Down www.livingelectro.com.mp3
            [2] => Fake Forward Ft. CHRYSTAL - Brush It Off (Club Mix) www.livingelectro.com.mp3
        )

    [type] => Array
        (
            [0] => 
            [1] => 
            [2] => 
        )

    [tmp_name] => Array
        (
            [0] => 
            [1] => 
            [2] => 
        )

    [error] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 1
        )

    [size] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )

)

[type]和[tmp_name]为空,[error]显示错误,[size]显示0kb。

但是当我尝试上传一些rar文件时,正在运行:

Array
(
    [name] => Array
        (
            [0] => Aaargh.zip
            [1] => afta-sans.zip
            [2] => armata.zip
        )

    [type] => Array
        (
            [0] => application/octet-stream
            [1] => application/octet-stream
            [2] => application/octet-stream
        )

    [tmp_name] => Array
        (
            [0] => C:\xampp\tmp\php95EE.tmp
            [1] => C:\xampp\tmp\php95FF.tmp
            [2] => C:\xampp\tmp\php9600.tmp
        )

    [error] => Array
        (
            [0] => 0
            [1] => 0
            [2] => 0
        )

    [size] => Array
        (
            [0] => 13835
            [1] => 32570
            [2] => 26454
        )

)

这是我的索引代码:

<?php
    $files = $_FILES["postFile"];
    echo '<pre>';
    print_r($files);
    echo '</pre></br></br>';
?>

1 个答案:

答案 0 :(得分:1)

如果您注意到没有填写所有阵列的情况,那么您确实会将所有上传的文件标记为错误!

[error] => Array
    (
        [0] => 1
        [1] => 1
        [2] => 1
    )

1 = UPLOAD_ERR_INI_SIZE

这就是为什么其他任何字段都没有包含您期望的内容。

在对上传的文件执行任何操作之前,您必须始终检查错误数组。

您需要检查此参数的php.ini文件,并可能增加最大尺寸。

upload_max_filesize = ?

很可能也是这个。

post_max_size = ?

post_max_size需要足够大才能应对upload_max_filesize * number of files uploaded +几k以应对同时传递的其他字段和一般开销。

...