第一节上传设置
客户端设置
form:method=post、enctype=multipart/form-data
input:type=file
formaction=upload.phpmethod=postenctype=multipart/form-datainputtype=filename=fname!--MAX_FILE_SIZE有兼容问题--inputtype=hiddenname=MAX_FILE_SIZEvalue=/buttontype=submit提交/button/form
服务端设置
在php.ini中进行设置:
默认uploadmaxfilesize=2M,如果你想上传超过8M的文件,比如:20M,你在设定uploadmaxfilesize=20M的同时,还要修改postmaxsize选项(默认为8M)。否则post数据超出限制,$_FILES将会为空(报错)。
$_FILES数组
$_FILES超全局数组中,包含着从客户端提交文件的全部信息:
array(size=1)fname=//上传文件表单项的namearray(size=5)name=stringhome.html(length=21)//上传文件的名称type=stringtext/html(length=9)//文件类型(常见文件都可以上传)tmp_name=stringC:\wamp\tmp\php57A2.tmp(length=23)//上传文件的临时文件名error=int0//上传文件遇到的错误号size=int//上传文件的大小
上传步骤
var_dump($_FILES);$file=$_FILES[fname];
获取$_FILES文件临时文件
$tmp_file=$file[tmp_name];
获取后缀名
$ext=pathinfo($file[name],PATHINFO_EXTENSION);//后缀名
创建新文件名
$new_file=file.rand(1,)...$ext;
保存路径
$path=./files;
格式化路径
$path=rtrim($path,/)./;
拼接上传目录
$new_file=$path.$new_file;
临时文件转换成正式文件
move_uploaded_file($tmp_file,$new_file);
PHP第二节下载设置
浏览器对于可识别的文件格式(html、txt、png、jpg等),默认是直接打开的,对于无法识别的文件,才作为附件来下载。为了可以让可识别的文件也直接可以下载,需要进行如下设置:
atitle=点击下载href=down.php?name=01.jpgtype=image/jpegimgsrc=01.jpg/a
1.读取文件
$fliename=$_GET[name];$filetype=$_GET[type];
2.文件的描述信息Content-Disposition(内容配置)指定为attachment(附件)(必须)
header(Content-Disposition:attachment;filename={$filename});
3.指定被下载文件的类型(非必须)
header(Content-Type:{$filetype});
4.指定被下载文件大小(非必须)
header(Content-Length:.filesize($filename));
5.将内容读入内存缓冲区
readfile($filename);
注意:在readfile($filename)之前,不能有任何输出语句(错误信息、var_dump调试语句,echo输出等),否则下载的文件会出错。
PHP-文件处理系统「程序员培养之路第三十七天」
PHP-错误日志处理「程序员培养之路第三十六天」
PHP-日期时间操作函数「程序员培养之路第三十五天」