文件上传原理

将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录

客户端配置

提交表单

表单的发送方式为post

添加enctype="multipart/form-data"

服务器端配置(推荐学习:PHP编程从入门到精通)

file_uploads = On,支持HTTP上传

uoload_tmp_dir = ,临时文件保存目录

upload_max_filesize = 2M,允许上传文件的最大值

max_file_uploads = 20 ,允许一次上传到的最大文件数

post_max_size = 8M,post方式发送数据的最大值

max_execution_time = -1,设置了脚本被解析器终止之前允许的最大执行时间,单位为秒,防止程序写的不好而占尽服务器资源。-1代表无穷

max_input_time = 60 ,脚本解析输入数据允许的最大时间,单位为秒

max_input_nesting_level = 64 ,设置输入变量的嵌套深度

max_input_vars_ = 1000,接受多少输入的变量(限制分别应用于$_GET、$_POST和$_COOKIE超全局变量,将会导致E_WARNING的产生,更多的输入变量将会从请求中截断。

memory_limit = 128M,最大单线程的独立内存使用量。也就是一个web请求,给予线程最大的内存使用量的定义

错误信息说明

UPLOAD_ERR_OK:其值为0,没有错误发生,文件上传成功

UPLOAD_ERR_INI_SIZE:其值为1,上传的文件超过了php.ini中upload_max_filesize选项限制的值

UPLOAD_ERR_FORM_SIZE:其值为2,上传文件的大小超过了HTML表单中MAX_FILE_SIZE选项指定的值

UPLOAD_ERR_PARTIAL:其值为3,文件只有部分被上传

UPLOAD_ERR_NO_FILE:其值为4,没有文件被上传

UPLOAD_ERR_NO_TMP_DIR:其值为6,找不到临时文件夹

UPLOAD_ERR_CANT_WRITE:其值为7,文件写入失败

UPLOAD_ERR_EXTENSION:其值为8,上传的文件被PHP扩展程序中断

客户端限制

通过表单隐藏域限制文件上传文件的最大值

1

<input type='hidden' name='MAX_FILE_SIZE' VALUE='字节数' />

通过accept属性限制上传文件类型

1

<input type='file' name='myFile' accept='文件的MIME类型' />

在客户端的限制,用户可在网页上修改代码后上传,故无实际意义。应在服务器端加以限制

限制上传文件的大小

限制上传文件类型

检测是否为真实图片类型

检测是否为HTTP POST方式上传

php上传文件的原理的更多相关文章

  1. Web上传文件的原理及实现

    现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload.还有Struts1.x和Struts2中带的上传文件功能(实际上,Struts2 ...

  2. Struts2文件上传和下载(原理)

    转自:http://zhou568xiao.iteye.com/blog/220732 1.    文件上传的原理:表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值:1)     ...

  3. ajaxfileupload原理及用法,主要用于即想用ajax序列化传递参数,又必须上传文件

    一,原理 AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值. 当初做了个异步上传的功能,选择它因 ...

  4. atitit.ajax上传文件的实现原理 与设计

    atitit.ajax上传文件的实现原理 与设计 1. 上传文件的三大难题 1 1.1. 本地预览 1 1.2. 无刷新 1 1.3. 进度显示 1 2.  传统的html4  + ajax 是无法直 ...

  5. silverlight漂亮的文件上传进度显示原理及示例

    silverlight漂亮的文件上传进度显示原理及示例 作者:chenxumi 出处:博客园  2009/11/27 13:37:11 阅读 1219  次 概述:在网站根目录web.config里配 ...

  6. HTTP上传 文件上传 图片上传 HTTP上传原理 文件上传原理 图片上传原理

    1.概述 在最初的http协议中,没有上传文件方面的功能.rfc1867(http://www.ietf.org/rfc/rfc1867.txt )为http协议添加了这个功能.浏览器按照此规范将用户 ...

  7. ajax-属性、原理、实现html5进度条上传文件

    一.远古ajax实现方式如下: 1.前端请求后台,后台设置返回 http状态码204 2.运用img图片(或css/javascript等)的加载机制,请求后台 3.post提交数据,运用iframe ...

  8. ASP.NET、JAVA跨服务器远程上传文件(图片)的相关解决方案整合

    一.图片提交例: A端--提交图片 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string u ...

  9. Android上传文件至服务器(上)

    每一次都不能上首页,真悲催..管理员让我上一次首页? 很多时候我更愿意一个人写代码,与其在垃圾代码上改改改,我更愿意直接重构. 整洁的代码简单直接.整洁的代码如同优美的散文.整洁的代码从不隐藏设计者的 ...

随机推荐

  1. 004-windows(64位)下使用curl命令

    一.下载工具包:http://curl.haxx.se/download.html 二.使用 使用方式一:在curl.exe目录中使用 解压下载后的压缩文件,通过cmd命令进入到curl.exe所在的 ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_04-集合_02 泛型_6_泛型通配符

    泛型通配符是一个问号 也是代表不确定的意思 换成Object两个都报错了. 泛型是没有继承概念的,所以上面写Object就会报错.这里应问号 可以代表位置类型 it.next会自动用Object接收 ...

  3. 字符串中的TRIM操作

    std::string& ltrim(std::string& str, const std::string& chars = "\t\n\v\f\r ") ...

  4. mysql 添加外键报错:

    1.报错信息 Cannot add or update a child row: a foreign key constraint fails 2.原因分析 [1]字段的数据类型 父表: 子表: 以上 ...

  5. charles_01_打断点修改接口请求&返回数据

    前言 测试过程中,为了模拟某场景测试,经常需要修改接口请求或者返回数据.可通过抓包工具打断点,实现模拟测试场景.常用的抓包工具charles和fiddler均可打断点mock数据.由于小编安装了cha ...

  6. JAVA调用shell脚本利用ansible修改多节点上的redis参数

    创建hosts文件 创建ansible-playbook执行时所用到的hosts文件,例如 /etc/redis/hosts 利用shell命令根据传入的host名和地址写入hosts文件: #set ...

  7. JDK8 parallelStream性能测试

    https://blog.csdn.net/u011870280/article/details/80700993 public static void main(String[] args) {lo ...

  8. 一台电脑关联多个git账号

    一台电脑连接多个git账号 现需要一台电脑连接gitlab,github,码云,之前的操作时,用公司账号,在这几个地方都注册一遍,导致自己就有两类号,一个自己的,一个公司的,这样也是可以,但总是不太好 ...

  9. Storm消费Kafka值得注意的坑

    问题描述: kafka是之前早就搭建好的,新建的storm集群要消费kafka的主题,由于kafka中已经记录了很多消息,storm消费时从最开始消费问题解决: 下面是摘自官网的一段话:How Kaf ...

  10. smarty之缓存机制

    当smarty开启缓存时,当tpl文件内容改变时,则缓存页面会重新生成 test.php: <?php date_default_timezone_set('asia/shanghai'); h ...