1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.
但在php中,默认的该页最久执行时间为 30 秒.就是说超过30秒,该脚本就停止执行.
这就导致出现 无法打开网页的情况.这时我们可以修改 max_execution_time
在php.ini里查找
max_execution_time
默认是30秒.改为
max_execution_time = 0
0表示没有限制
2. 修改 post_max_size 设定 POST 数据所允许的最大大小。此设定也影响到文件上传。
php默认的post_max_size 为2M.如果 POST 数据尺寸大于 post_max_size $_POST 和 $_FILES superglobals 便会为空.
查找 post_max_size .改为
post_max_size = 150M
3. 很多人都会改了第二步.但上传文件时最大仍然为 8M.
为什么呢.我们还要改一个参数upload_max_filesize 表示所上传的文件的最大大小。
查找upload_max_filesize,默认为8M改为
upload_max_filesize = 100M
另外要说明的是,post_max_size 大于 upload_max_filesize 为佳.
刚学php时写的一个类,可以给你参考下,你所说的功能基本上也都有。
这个用作学习还是不错的。
<?phpclass fileup{
private $savefilepath //保存路径
private $filetype=array('gif','jpg','jpeg','png') //文件类型
private $maxsize=1000000 //上传最大的尺寸 默认值设置为1M
private $savename=true //是否默认随机名称
private $upfileform //上传文件表单的name值
//以下是不可以修改的成员属性
private $tmpname //上传的临时文件名
private $upfilename //上传文件的名称
private $uperror
private $newname //新的文件名
//private $upfiletype //上传文件的类型
private $upfilesize //上传文件的大小。
private $filehz //文件名的扩展名。
//构造方法
function __construct($upfileform,$savefilepath='./upload/'){
$this->upfileform=$upfileform
$this->savefilepath=rtrim($savefilepath,'/')
$this->tmpname=$_FILES[$upfileform]['tmp_name']
$this->upfilename=$_FILES[$upfileform]['name']
$this->upfilesize=$_FILES[$upfileform]['size']
$this->uperror=$_FILES[$upfileform]['error']
$this->getnewname()
}
//设置文件上传的参数,不设置为默认值。
function setfilepar($par){
$pars=array('filetype','maxsize','savename')
foreach($par as $key=>$value){
if(in_array($key,$pars)){
$this->$key=$value
}else{
continue
}
}
}
//检查上传
private function checkfileup(){
//判断文件夹是否正确或文件夹是否有可写入的权限。
if(!is_dir($this->savefilepath)||!is_writable($this->savefilepath)){
$this->uperror=8
return false
}
//判断文件名是否存在
if(is_file($this->newname)){
$this->uperror=9
return false
}
//判断上传文件的类型是否正确。
if(!in_array(strtolower($this->filehz),$this->filetype)){
$this->uperror=-1
return false
}
return true
}
//获取新的文件名字
private function getnewname(){
$tmp=explode('.',$this->upfilename)
$this->filehz=$tmp[count($tmp)-1]
if(is_bool($this->savename)){
if($this->savename){
$this->newname=$this->savefilepath.'/'.date('YmdHis').rand(10000,99999).'.'.$this->filehz
}else{
$this->newname=$this->savefilepath.'/'.$this->upfilename
}
}else{
$this->newname=$this->savefilepath.'/'.$this->savename.'.'.$this->filehz
}
}
//获取错误信息
private function getuperror(){
switch($this->uperror){
case 1: echo '上传文件超过了系统指定的大小' break
case 2: echo '上传文件超过了表单中指定的大小' break
case 3: echo '文件只有部分上传' break
case 4: echo '没有文件上传' break
case 6: echo '找不到上传的文件,系统错误' break
case 7: echo '文件写入失败' break
case 8: echo '文件路径不存在,或不可写' break
case 9: echo '文件名已经存在,请不要重复上传' break
case -1: echo '不是指定上传的文件' break
case -2: echo '请勿使用非法途径上传' break
case -3: echo '文件上传失败' break
default: '未知错误' break
}
}
function fileupload(){
if(!$this->checkfileup()||$this->uperror!=0){
$this->getuperror()
return false
}else{
if(!is_uploaded_file($_FILES[$this->upfileform]['tmp_name'])){
$this->uperror=-2
$this->getuperror()
return false
}else{
if(move_uploaded_file($_FILES[$this->upfileform]['tmp_name'],$this->newname)){
return true
}else{
$this->uperror=-3
return false
}
}
}
}
//获取文件名
function getname(){
return $this->newname
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)