You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/js/TQEditor/upload.inc.php

121 lines
3.7 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/*************************************************
* 本单元写于
* 作者 : 李腾秋
* E-Mail : litqqs@163.com
* 版权所有 : 李腾秋
*************************************************/
/*************************************************
上传处理相关函数
例子:
require 'upload.inc.php';
$save_dir='./upload/';
$save_url='./upload/';
$file_field_name='file';
$max_size=1024*1024;
$exts='';
echo json_encode(uploadFile($save_dir, $save_url, $file_field_name, $max_size,$exts));
*************************************************/
/**
* 处理上传文件
* 返值结构
* -error 出错代码,0表示成功
* -message 出错信息
* -url 保存后的网址
* -file 相对保存目录的文件路径
* -name 原始文件名
* -ext 上传文件的后缀小写形式,如".jpg"
* @param string $save_dir 保存文件目录
* @param string $save_url 目录的web访问网址
* @param string $file_field_name 表单名
* @param int $max_size 文件最大尺寸
* @param bool $auto_create_sub_dir 是否将自动建子目录来保存文件
* @param string $exts 允许后缀,多个后缀用分号";"隔开,"*"表示所有. 图片后缀例: "jpg;gif;png"
* @return array
*/
function uploadFile($save_dir, $save_url, $file_field_name='file', $max_size=0, $exts='*', $auto_create_sub_dir=true)
{
$result=array();
$result['error']=0;
$result['message']='';
$result['url']='';//上传后文件网址
$result['file']='';//相对保存目录的文件路径
$result['name']='';
$result['ext']='';//上传文件的后缀小写形式,如".jpg"
//$result['exec_js']='';
if(!isset($_FILES[$file_field_name]['tmp_name']) || !is_uploaded_file($_FILES[$file_field_name]['tmp_name'])){
$result['error']=1;
$result['message']='失败:上传失败';
return $result;
}
//检查大小
if($max_size>0 && $_FILES[$file_field_name]['size']>$max_size){
$result['error']=2;
if($max_size>1048576)//1M
{
$size = round($max_size / 1048576,2) .'MB';
}elseif($max_size>1024){
$size = round($max_size / 1024,2) .'KB';
}else{
$size = $max_size .'B';
}
$result['message']='失败:文件太大, 请上传小于 '.$size.' 的文件.';
return $result;
}
$result['name'] = $_FILES[$file_field_name]['name'];
$ext = $result['ext'] = '.'.strtolower(substr(strrchr($_FILES[$file_field_name]['name'],'.'),1));
//文件后缀检查
if($exts!='*.*' && $exts!='*'){
$exts= explode(';',strtolower($exts));
if(!in_array(substr($ext,1),$exts)){
$result['error']=3;
$result['message']='失败:请上传(*.'.implode(';*.',$exts).')格式文件';
return $result;
}
}
$p = $auto_create_sub_dir ? date('Ym/d/') :'';
if(!is_dir($save_dir . $p) && !mkdir($save_dir . $p, 0755, true)){
$result['error']=4;
$result['message']='失败:建目录['.UPLOAD_DIR . $p.']失败';
return $result;
}
$f = $p.time().$ext;
while(is_file($save_dir.$f)){
$f = $p.time().'_'.uniqid().$ext;
}
if(!move_uploaded_file($_FILES[$file_field_name]['tmp_name'], $save_dir.$f)){
$result['error']=5;
$result['message']='失败, 写入文件['.$save_dir.$f.']失败.';
return $result;
}
$result['url'] = $save_url . $f;
$result['file'] = $f;
return $result;
}
//上传图片
function uploadImage($save_dir, $save_url, $file_field_name='file', $max_size=2097152, $exts='jpg;gif;png', $auto_create_sub_dir=true)
{
$result=uploadFile($save_dir, $save_url, $file_field_name, $max_size, $exts, $auto_create_sub_dir);
$result['width']=0;
$result['height']=0;
if($result['error']==0){
$size_info = @getimagesize($save_dir.$result['file']);
if(false==$size_info){
return $result;
}
$result['width']=$size_info[0];
$result['height']=$size_info[1];
//list($width,$height,$type,$text)
}
return $result;
}