Superglobal $ _FILES数组错误元素

时间:2014-12-31 01:19:04

标签: php arrays file-upload

在$ _FILES数组中,如何确定[error]元素的含义?

它输出1,这意味着它遇到错误,但我怎么能弄清楚这是什么错误,特别是我可以处理它?

否则我卡住了,[错误] = 1有点无用,因为它没有给我很多关于如何纠正这种情况的信息。

(基本上有任何方法可以从错误数组元素中提取更多信息,除了表示存在错误的1值之外)。如果没有这样的方法来弄清楚[错误]是什么,那么找出我的文件无法正确上传的另一种方法是什么?

这就是我的尝试:

<?php
if(isset($_FILES['file'])) {
    $file = $_FILES['file'];

    //File properties
    $file_name = $file['name'];
    $file_tmp = $file['tmp_name'];
    $file_size = $file['size'];
    $file_error = $file['error'];

    //Work out the file extension
    $file_ext = explode('.', $file_name);
    $file_ext = strtolower(end($file_ext));

    $allowed = array('txt', 'jpg', 'mp3', 'mpeg3', 'mpeg', 'mpeg-3', 'zip');

    if(in_array($file_ext, $allowed)){
        if($file_error == 0){
            if($file_size <= 10000000){

                $file_name_new = uniqid('', true) . '.' . $file_ext;
                $file_destination = 'uploads/' . $file_name_new;

                if(move_uploaded_file($file_tmp, $file_destination)){
                    echo $file_destination;
                }
            }
        }
        else{
            echo $file_error;
        }
    }
}
?>

<!doctype html>
<html>
<body>
<br><br>
Click <a href='./member.php'>here</a> to go back to the member page
<br><br>
<?php 
    if(isset($_POST['upload'])) {
        echo "<pre>";
        print_r($_FILES);
        echo "</pre>";
    }

?>
</body>
</html>

这是它为mp3文件输出的内容: 1

点击此处返回会员页面

阵 (     [file] =&gt;排列         (             [name] =&gt; soundfile.mp3             [type] =&gt;             [tmp_name] =&gt;             [错误] =&gt; 1             [size] =&gt; 0         )

1 个答案:

答案 0 :(得分:0)

(1)表示:上传的文件超过了上传最大文件大小。这是2M,我确定你的mp3文件大小比那个大。

要更改此指令,您有两个选择:

1 - 来自php.ini(如果您不知道它在哪里,请使用phpinfo()函数),然后更改upload_max_filesize = 16M,然后重新启动服务器。

2 - 从您的htaccess文件:php_value upload_max_filesize 16M