【问题标题】:PHP file upload missing tmp_namePHP 文件上传缺少 tmp_name
【发布时间】:2015-05-10 21:24:17
【问题描述】:

我下载并安装了 xampp for windows。当我尝试在 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>';
?>

【问题讨论】:

    标签: php apache xampp


    【解决方案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 以应对同时传递的其他字段和一般开销。

    ......

    【讨论】:

    • 是的,但我需要获取 [tmp_name] 并且此字段为空白
    • 它是空白的,因为文件太大,实际上没有上传。
    • upload_max_file_size 是 8mb 我把它改成了 200mb
    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    相关资源
    最近更新 更多