我有以下php代码,允许用户上传图片。如何修改我的代码,以便限制(比如说最大800 k)到上传图像的大小。这是我的代码。
<?php
if (isset($_FILES['profile'])===true) {
if (empty($_FILES['profile']['name']) === true) {
echo'Please choose an Image File !';
} else {
$allowed = array('jpg', 'jpeg', 'gif', 'png');
$file_name = $_FILES['profile']['name'];
$file_extn = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$file_temp = $_FILES['profile']['tmp_name'];
if (in_array($file_extn, $allowed) === true) {
change_profile_image($session_user_id, $file_temp, $file_extn);
header('Location: ' . $current_file);
exit();
} else {
echo'Incorrect file type! Allowed:';
echo implode(', ', $allowed);
}
}
}
if (empty($user_data['profile'])=== false ) {
echo '<img src="', $user_data['profile'], '" alt="', $user_data['name'], ' - Profile Image">';
}
?>
答案 0 :(得分:2)
修改代码以处理检查,您只需要添加以下语句
if ($_FILES['profile']['size'] > 800*1024) {
echo 'File size too large';
} else {
// your code for processing uploaded image
}
例如
<?php
if (isset($_FILES['profile'])===true) {
if (empty($_FILES['profile']['name']) === true) {
echo'Please choose an Image File !';
} else {
if ($_FILES['profile']['size'] > 800*1024) {
echo 'File size too large';
} else {
$allowed = array('jpg', 'jpeg', 'gif', 'png');
$file_name = $_FILES['profile']['name'];
$file_extn = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
$file_temp = $_FILES['profile']['tmp_name'];
if (in_array($file_extn, $allowed) === true) {
change_profile_image($session_user_id, $file_temp, $file_extn);
header('Location: ' . $current_file);
exit();
} else {
echo'Incorrect file type! Allowed:';
echo implode(', ', $allowed);
}
}
}
}
if (empty($user_data['profile'])=== false ) {
echo '<img src="', $user_data['profile'], '" alt="', $user_data['name'], ' - Profile Image">';
}
?>
虽然在这一点上,有了这么多嵌套的if
语句,我会开始考虑将它整理成一些上传函数或者可能是一个类。
另一种方法是在表单中设置MAX_FILE_SIZE隐藏输入,然后检查$_FILES
的{{1}}的错误值
HTML
2
PHP
<input type="hidden" name="MAX_FILE_SIZE" value="819200" />
显然,这个解决方案可以被Firebug或Web Inspector等人员在表格发布之前更改价值来规避
答案 1 :(得分:1)
$_FILES['userfile']['size']
上传文件的大小(以字节为单位)。
要使用它:
if($_FILES['profile']['size'] > $limit)
die('Too large!');`
或者你当然可以这样做:
if(filesize($_FILES['profile']['tmp_name']) > $limit)
die('Too large!');`
答案 2 :(得分:0)
这应该是你要找的东西:
$_FILES["file"]["size"] - the size in bytes of the uploaded file
来源:
答案 3 :(得分:0)
$_FILES['uploaded_file']['size']
应该给你文件的大小。您可以使用if语句
$_FILES['uploaded_file']['type']
如果要查看上传的文件类型