竹笋

首页 » 问答 » 问答 » PHP文件上传和下载程序员培养之路第
TUhjnbcbe - 2023/9/9 21:29:00

第一节上传设置

客户端设置

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-日期时间操作函数「程序员培养之路第三十五天」

1
查看完整版本: PHP文件上传和下载程序员培养之路第