在$ _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 )
)
答案 0 :(得分:0)
(1)表示:上传的文件超过了上传最大文件大小。这是2M,我确定你的mp3文件大小比那个大。
要更改此指令,您有两个选择:
1 - 来自php.ini(如果您不知道它在哪里,请使用phpinfo()函数),然后更改upload_max_filesize = 16M
,然后重新启动服务器。
2 - 从您的htaccess文件:php_value upload_max_filesize 16M