PHP实现上传下载

  • 文件上传与下载
  1. 文件上传

上传文件的method必须为post  ,  enctype=”multipart/from-data” 二者缺一不可

doAction 中接收文件用_Files

$_FILES中有五个上传变量:

  1. name :上传文件名
  2. Type:上传文件MIME类型
  3. Tmp-name:上传到服务器的临时文件名
  4. Size:上传文件的大小
  5. Error:上传文件的错误号
Array(    
[name] => php笔记.docx    
[type] =>     
[tmp_name] =>     
[error] => 3    
[size] => 0)
 
移动上传文件函数 move_uploaded_file($tempName,url)
复制文件到指定路径 copy($tempName,url)
 
  1. 服务器端配置php.ini

(1.) file_upload = on  支持http文件上传,否则文件上传不成功

(2.)upload_tmp_dir  临时文件保存的目录

(3.)post_max_size  POST方式发送数据的最大值  默认为8M

(4.)upload_max_filesize  允许上传文件的最大值 默认为2M
(5.)max_file_uploads    允许以此上传的最大文件数  默认为20
 
  1. 上传文件错误号
(1)0 没有发生错误,文件上传成功
(2)1 上传的文件超过了php.ini中upload_max_filesize选项限制的值
(3)2 上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值
(4)3 文件只有部分被上传
(5)4 没有文件被上传
(6)6找不到临时文件
(7)7 文件写入失败
(8)8 上传的文件被PHP扩展程序中断
 
 
 
 
  1. 上传文件的客户端限制(尽量不使用,对会程序的人来说没用可以直接在前端改掉)
  1. 通过表单隐藏域来限制上传文件的最大值
 
  1. 通过accept属性来限制上传文件的类型
 
  1. 上传文件的服务器端限制
  1. 限制上传文件大小
  2. 限制上传文件类型
  3. 检测是否为真实图片类型
  4. 检测是否为HTTP POST方式上传
 
Pathinfo($fileName,$pathinfo_extension)获取文件拓展名函数
In_array($ext,$allowExt)判断$ext是否在数组$allowExt中
Is_uploaded_file($fileName)判断是否是通过HTTP POST方式上传的文件
Getimagesize($fileName)判断图片的类型 若为真则返回图片数组信息 否则返回false
File_exists($fileName)判断文件是否已经存在
Mkdir($fileName,0777,ture)创建名为fileName的文件给予其最大权限0777
Chmod($fileName,true)给这个文件授权
MD5($var)加密成MD5格式密文
Uniqid(mictotime(true),true)根据微秒时间生成唯一一个ID
Move_uploaded_file($fileName,$url)移动临时上传文件至路径url
Copy($fileName,$url)复制临时上传文件至路径url

is_set($var) 判断变量是否存在  存在返回TRUE不存在返回false

Array_fileter($array) 过滤数组中的空元素

Array_values($array) 将原数组中的元素取出重新排列一个数组 可以将过滤后的数组中心定义下标

Basename($url) 返回路径中的文件名部分

 

注意: 使用数组时尽量判断数组是否为空用empty($var)/isset($var)都可以  如果不判断的话容易出错

 

 

2文件下载

  1. 通过 来下载  浏览器不支持的格式会在网页上下载,而类似图片那种浏览器支持的格式会直接在网页上显示
  2. 通过程序下载,在a标签上加上

doAction: $filename=$__GET[‘filename’];

Header(‘content-disposition:attachment;filename=’.basename($filename));//告诉网页是以附件方式下载

Herder(‘content-length:’.filesize($filename));//告诉网页文件大小

Readfile($filename);

你可能感兴趣的:(PHP)