php判断上传文件大小
时间: 2024-01-30 17:14:20 浏览: 109
在 PHP 中,可以使用 $_FILES 超全局变量获取上传的文件信息。其中,$_FILES['name']['size'] 可以获取上传文件的大小。判断上传文件大小的代码示例如下:
```php
// 限制上传文件最大为 2MB
$maxFileSize = 2 * 1024 * 1024;
if ($_FILES['file']['size'] > $maxFileSize) {
echo '上传文件大小超过限制!';
}
```
在上面的代码中,我们首先定义了一个变量 $maxFileSize,它表示上传文件的最大允许大小。然后,我们通过判断 $_FILES['file']['size'] 和 $maxFileSize 的大小关系来判断上传文件是否超过限制。如果超过限制,则输出提示信息。
相关问题
php上传文件1. 判断文件类型,是否符合要求,要求只能上传jpg和png格式的文件。 2. 判断大小:文件大小不超过200K。 (大小、类型具体要求可自己的规定) 3. 上传后,统一命名:用“时间戳”作为新文件名。同时,获取到原始文件名中的扩展名,作为新文件名的扩展名。
在PHP中,为了满足上述要求上传文件,你需要结合`$_FILES`数组的属性来检查文件类型、大小并生成新的文件名。这里是一个示例代码:
```php
<?php
// 设置允许的文件类型
$allowedExtensions = array('jpg', 'png');
// 获取当前时间戳用于文件名
$timestamp = time();
// 检查上传文件
if(isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
$fileName = basename($_FILES['file']['name']);
// 分离原文件名和扩展名
list($originalName, $extension) = pathinfo($fileName);
// 检查文件类型
$fileType = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
if(!in_array($fileType, $allowedExtensions)) {
echo "只允许上传.jpg 和.png 格式的文件。";
exit;
}
// 检查文件大小
$maxFileSize = 2097152; // 2MB
if($_FILES['file']['size'] > $maxFileSize) {
echo "文件大小超过200KB。";
exit;
}
// 生成新的文件名
$newFileName = $timestamp . "_" . $originalName . '.' . $fileType;
// 移动上传的文件到指定目录,替换旧名字
$destinationPath = 'uploads/' . $newFileName;
if(move_uploaded_file($_FILES['file']['tmp_name'], $destinationPath)) {
echo "文件已成功上传,新的文件名为:" . $newFileName;
} else {
echo "文件上传失败。";
}
} else {
echo "请选择一个文件。";
}
?>
```
在这个代码中,我们首先检查了文件类型和大小,如果不符合条件则给出相应的错误信息并终止脚本。如果一切正常,会使用时间戳和原始文件名生成新的文件名,并将其移动到预设的上传目录。
常用类的封装,文件上传类,判断路径是否可用,获取文件信息,检查文件大小,检查文件后缀,移动文件至指定目录的方法,显示错误信息的方法PHP
以下是一个常用的PHP文件上传类的封装,其中包含了判断路径是否可用、获取文件信息、检查文件大小、检查文件后缀、移动文件至指定目录的方法以及显示错误信息的方法:
```php
class FileUploader {
private $allowedExtensions = array();
private $sizeLimit = 10485760;
private $file;
function __construct(array $allowedExtensions = array(), $sizeLimit = 10485760){
$allowedExtensions = array_map("strtolower", $allowedExtensions);
$this->allowedExtensions = $allowedExtensions;
$this->sizeLimit = $sizeLimit;
$this->checkServerSettings();
if (isset($_FILES['file'])) {
$this->file = new File($_FILES['file']);
}
}
private function checkServerSettings(){
$postSize = ini_get('post_max_size');
$unit = strtoupper(substr($postSize, -1));
$postSize = (int)substr($postSize, 0, -1);
if ($unit == 'G') {
$postSize *= 1024 * 1024 * 1024;
} else if ($unit == 'M') {
$postSize *= 1024 * 1024;
} else if ($unit == 'K') {
$postSize *= 1024;
}
if ($postSize < $this->sizeLimit) {
$this->sizeLimit = $postSize;
}
}
function upload($uploadDirectory){
if (!is_writable($uploadDirectory)) {
return "上传目录不存在或不可写";
}
if (!$this->file) {
return "没有文件被上传";
}
$size = $this->file->size();
if ($size == 0) {
return "文件大小为0";
}
if ($size > $this->sizeLimit) {
return "文件大小超过限制";
}
$pathinfo = pathinfo($this->file->name());
$filename = $pathinfo['filename'];
$ext = $pathinfo['extension'];
if ($this->allowedExtensions && !in_array(strtolower($ext), $this->allowedExtensions)) {
return "文件类型不被允许";
}
$filename = md5(uniqid($filename));
$filename .= '.'.$ext;
$filePath = $uploadDirectory.'/'.$filename;
if ($this->file->save($filePath)) {
return $filename;
} else {
return "文件上传失败";
}
}
}
class File {
private $file;
function __construct($file){
$this->file = $file;
}
function name(){
return $this->file['name'];
}
function size(){
return $this->file['size'];
}
function save($path){
return move_uploaded_file($this->file['tmp_name'], $path);
}
}
```
阅读全文