php上传基础知识总结

1.文件上传

1》文件上传的原理:将客户端上的文件通过浏览器上传到服务器上,
在将服务器上的文件移动到指定目录。 2》客户端的配置
表单页面,浏览框
method='post'
enctype='multipart/form-data' 3》服务器端配置
$_FILES:接受上传文件信息 $_FILES['浏览框名称']['name']->上传文件的名称
$_FILES['浏览框名称']['type']->上传文件的MIME类型
$_FILES['浏览框名称']['tmp_name']->服务器端临时文件名称
$_FILES['浏览框名称']['size']->上传文件的大小,单位是字节
$_FILES['浏览框名称']['error']->上传文件的错误号 上传文件的错误号: 0 或者UPLOAD_ERR_OK:代表没有错误,证明客户端上的文件发送到了服务器端
1或者UPLOAD_ERR_INI_SIZE:超过了PHP配置文件允许上传的文件的最大大小,upload_max_filesize=选项的值
2或者UPLOAD_ERR_FORM_SIZE:超过了表单中限制上传文件的最大大小,超过了MAX_FILE_SIZE选项的值
3或者UPLOAD_ERR_PARTIAL:文件部分被上传
4或者UPLOAD_ERR_NO_FILE:没有选择上传文件
6或者UPLOAD_ERR_NO_TMP_DIR:没有找到临时目录
7或者UPLOAD_ERR_CANT_WRITE:目录不能写
8或者UPLOAD_ERR_EXTENSION:由于PHP扩展程序中断了文件上传 和文件上传有关的配置信息:
file_uploads = On,是否支持通过HTTP形式上传文件
upload_tmp_dir =上传文件的临时目录
upload_max_filesize = 2M,设置上传文件的最大大小
post_max_size = 8M,设置表单以POST形式发送数据的最大值
max_file_uploads = 20,一次最多可以上传多少个文件
$_FILES是空数组,上传文件为Array()数组的情况,没有接到上传文件信息的可能:
1》表单中method 和enctype
2》file_uploads是否开启 bool move_uploaded_file($tmp_name,$destination):将服务器端的临时文件移动指定目录下,
叫什么名字;移动成功,返回true,失败false 3》上传文件限制
客户端限制
限制上传文件大小
<input type='hidden' name='MAX_FILE_SIZE' value='文件大小,单位字节'/> 限制上传文件类型
<input type='file' name='myFile' accept='上传文件的MIME类型,多个类型之间以,分隔'/> 常用的文件的MIME类型
扩展名 MIME类型
jpg/jpeg image/jpeg
gif image/gif
png image/png
html text/html
txt text/plain
pdf application/pdf
在客户端上做的限制,可以绕过 服务器端限制
限制上传文件的大小
限制上传文件的类型
限制是否是通过HTTP POST方式上传的
检测是否是真实图片 //1.接收信息 //2.判断错误号(有错误的话匹配错误) //3.检测上传文件的大小 //4.检测上传文件的类型 //5.检测文件是否通过HTTP POST方式上传上来的 //6.最后移动文件

php上传(一)的更多相关文章

  1. Asp.Net Mvc 使用WebUploader 多图片上传

    来博客园有一个月了,哈哈.在这里学到了很多东西.今天也来试着分享一下学到的东西.希望能和大家做朋友共同进步. 最近由于项目需要上传多张图片,对于我这只菜鸟来说,以前上传图片都是直接拖得控件啊,而且还是 ...

  2. PHP搭建大文件切割分块上传功能

    背景 在网站开发中,文件上传是很常见的一个功能.相信很多人都会遇到这种情况,想传一个文件上去,然后网页提示"该文件过大".因为一般情况下,我们都需要对上传的文件大小做限制,防止出现 ...

  3. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

  4. 如何在nuget上传自己的包+搭建自己公司的NuGet服务器(新方法)

    运维相关:http://www.cnblogs.com/dunitian/p/4822808.html#iis 先注册一个nuget账号https://www.nuget.org/ 下载并安装一下Nu ...

  5. 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传

    LOT.UI分解系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#lotui LoT.UI开源地址如下:https://github.com/du ...

  6. 百度 flash html5自切换 多文件异步上传控件webuploader基本用法

    双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...

  7. input[tyle="file"]样式修改及上传文件名显示

    默认的上传样式我们总觉得不太好看,根据需求总想改成和上下结构统一的风格…… 实现方法和思路: 1.在input元素外加a超链接标签 2.给a标签设置按钮样式 3.设置input[type='file' ...

  8. 11、Struts2 的文件上传和下载

    文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置 ...

  9. IE8/9 JQuery.Ajax 上传文件无效

    IE8/9 JQuery.Ajax 上传文件有两个限制: 使用 JQuery.Ajax 无法上传文件(因为无法使用 FormData,FormData 是 HTML5 的一个特性,IE8/9 不支持) ...

  10. JS图片上传预览插件制作(兼容到IE6)

    其实,图片预览功能非常地常见.很意外,之前遇到上传图片的时候都不需要预览,也一直没有去实现过.现在手上的项目又需要有图片预览功能,所以就动手做了一个小插件.在此分享一下思路. 一.实现图片预览的一些方 ...

随机推荐

  1. 【TJOI/HEOI2016】求和

    题面 题目分析 \[ \begin{split} \sum_{i=0}^n\sum_{j=0}^iS(i,j)\cdot 2^j\cdot j!&=\sum_{j=0}^n2^j\cdot j ...

  2. Windows cmd 打开面板

    { 打开控制面板的命令是:“control”  打开控制面板  命令: rundll32.exe shell32.dll,Control_RunDLL  结果: 显示控制面板窗口.  例子:  Cal ...

  3. JMeter生成性能报表-Windows环境和Linux环境

    转载自https://www.cnblogs.com/imyalost/p/10239317.html

  4. Android中如何做到自定义的广播只能有指定的app接收

    今天没吊事,又去面试了,具体哪家公司就不说了,因为我在之前的blog中注明了那些家公司的名字,结果人家给我私信说我泄露他们的题目,好吧,我错了...其实当我们已经在工作的时候,我们可以在空闲的时间去面 ...

  5. 思维——cf1238C

    听思维的一道题,网上大多直接模拟,感觉有点麻烦,其实只要把连续段求出来,然后处理一下统计答案就行 两个注意点:1.除了第一个连续段,其余段长度都要+1 2.因为目的地是0,所以最后一段要特判一下 #i ...

  6. 64 计算机图形学入门(1)——OpenGL环境配置与图形流水线(图像管线)

    0 引言 最近想学一下计算机图形学方面的知识,原因如下.目前本人接触了数字图像处理(opencv)以及点云处理(PCL)方面的知识,对从图像和点云中提取特征信息,并将特征转化为底层/中层语义信息有了一 ...

  7. kafka为什么快?

    为什么Kafka那么快 原创 2016-07-18 fireflyc 写程序的康德 网上有很多Kafka的测试文章,测试结果通常都是"吊打"其他MQ.感慨它的牛B之余我觉得必要仔细 ...

  8. 关于Python中函数的使用

    函数的概念 # 概念 # 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就是函数 # 作用 # 方便代码的重用 # 分解任务 ...

  9. 使用redis实现客户端和服务端token验证

    实在是思维江化啊,没有想到可以给redis设置不同的key值来实现不同key值存储不同的value值,而一直想着给一个名为token的key值新增不同的数据,并设置过期时间,然而这样却不能新增只能做到 ...

  10. SQL比较时间查询语句

    select * from table1 where datediff(mm,'2009-8-12 13:17:50', date)>0 select * from table1 select ...