博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP上传文件详解
阅读量:5061 次
发布时间:2019-06-12

本文共 1673 字,大约阅读时间需要 5 分钟。

1.上传文件使用的提交方式和请求Content-type

  POST提交方式,原始的form表单提交请加上enctype="multipart/form-data"

 

2.MAX_FILE_SIZE 隐藏字段(单位为字节)

  必须放在文件输入字段之前,其值为接收文件的最大尺寸。这是对浏览器的一个建议,PHP 也会检查此项。在浏览器端可以简单绕过此设置,因此不要指望用此特性来阻挡大文件。实际上,PHP 设置中的上传文件最大值是不会失效的。但是最好还是在表单中加上此项目,因为它可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦

 

3.关于上传文件的相关配置有哪些?

  file_uploads = On/Off #是否允许文件上传

  upload_max_filesize = 20M #上传文件的大小限制

  max_file_uploads = 20 #每个请求上传文件的数量限制

  max_input_time = 60 #脚本解析输入数据允许的最大时间,单位是秒。 它从接收所有数据到开始执行脚本进行测量的

  post_max_size = 16M #最大POST数据大小

  upload_tmp_dir =/tmp #上传文件的临时目录

 

4.PHP从$_FILES数组中获取上传文件信息

  $_FILES['userfile']['name']  #客户端机器文件的原名称

  $_FILES['userfile']['type']    #文件的 MIME 类型,一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值
  $_FILES['userfile']['size']  #已上传文件的大小,单位为字节
  $_FILES['userfile']['tmp_name'] #文件被上传后在服务端储存的临时文件名
  $_FILES['userfile']['error']  #和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的

  注:如果该文件没有被移动到其它地方也没有被改名,则该文件将在表单请求结束时被删除。

5.单文件上传实例

前端
Send this file:
后端
';if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { echo "File is valid, and was successfully uploaded.\n";} else { echo "Possible file upload attack!\n";}echo 'Here is some more debugging info:';print_r($_FILES);print "";

 

6.多文件上传

前端

Pictures:

后端
$error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "data/$name"); }}

 

 

7.is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的

  这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。  

 

转载于:https://www.cnblogs.com/xiaozong/p/5734310.html

你可能感兴趣的文章
621. Task Scheduler && 358. Rearrange String k Distance Apart
查看>>
数据加密:Stunnel
查看>>
加密解密-C#
查看>>
数据库ACID和mvcc
查看>>
c++11 std::map 通过值查找键
查看>>
Oracle Silent Install 静默安装
查看>>
java实现图像灰度化
查看>>
CI分页类使用入门
查看>>
CS 231n 学习笔记 02——课程2.2 Linear Classification
查看>>
Lucene4.6至 Lucene6.6的每个迭代对API的改动
查看>>
2015 CALLED THE INTERFACE OF 2014
查看>>
flex布局学习笔记
查看>>
Linux FreeTDS的安装与配置
查看>>
使用postgre数据库实现树形结构表的子-父级迭代查询,通过级联菜单简单举例...
查看>>
1959: 图案打印
查看>>
React的组件化
查看>>
微信小程序开发(一)
查看>>
gitlab汉化
查看>>
【leetcode❤python】198. House Robber
查看>>
隐式类型转换
查看>>