理解流方式上传和form表单上传
2014-07-04 18:25
148 查看
流方式上传:
View Code
对于php://input介绍,PHP官方手册文档有一段话对它进行了很明确地概述:
“php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”.
翻译过来,是这样:
“php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data”
我们应该怎么去理解这段概述呢?我把它划分为三部分,逐步去理解:
读取POST数据
不能用于multipart/form-data类型
php://input VS $HTTP_RAW_POST_DATA
详见:
http://www.nowamagic.net/academy/detail/12220520
if (!$_FILES['Filedata']) { die ( 'Image data not detected!' ); } if ($_FILES['Filedata']['error'] > 0) { switch ($_FILES ['Filedata'] ['error']) { case 1 : $error_log = 'The file is bigger than this PHP installation allows'; break; case 2 : $error_log = 'The file is bigger than this form allows'; break; case 3 : $error_log = 'Only part of the file was uploaded'; break; case 4 : $error_log = 'No file was uploaded'; break; default : break; } die ( 'upload error:' . $error_log ); } else { $img_data = $_FILES['Filedata']['tmp_name']; $size = getimagesize($img_data); $file_type = $size['mime']; if (!in_array($file_type, array('image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/gif'))) { $error_log = 'only allow jpg,png,gif'; die ( 'upload error:' . $error_log ); } switch($file_type) { case 'image/jpg' : case 'image/jpeg' : case 'image/pjpeg' : $extension = 'jpg'; break; case 'image/png' : $extension = 'png'; break; case 'image/gif' : $extension = 'gif'; break; } } if (!is_file($img_data)) { die ( 'Image upload error!' ); }
View Code
PHP输入流php://input
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组。所以,这里主要探讨php输入流php://input对于php://input介绍,PHP官方手册文档有一段话对它进行了很明确地概述:
“php://input allows you to read raw POST data. It is a less memory intensive alternative to $HTTP_RAW_POST_DATA and does not need any special php.ini directives. php://input is not available with enctype=”multipart/form-data”.
翻译过来,是这样:
“php://input可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA而言,它给内存带来的压力较小,并且不需要特殊的php.ini设置。php://input不能用于enctype=multipart/form-data”
我们应该怎么去理解这段概述呢?我把它划分为三部分,逐步去理解:
读取POST数据
不能用于multipart/form-data类型
php://input VS $HTTP_RAW_POST_DATA
读取POST数据
PHPer们一定很熟悉$_POST这个内置变量。$_POST与php://input存在哪些关联与区别呢?另外,客户端向服务端交互数据,最常用的方法除了POST之外,还有GET。既然php://input作为PHP输入流,它能读取GET数据吗?这二个问题正是我们这节需要探讨的主要内容。详见:
http://www.nowamagic.net/academy/detail/12220520
相关文章推荐
- form表单上传文件和数据的不同书写方式
- 实现向服务器上传图片文件、实现不同方式的form表单提交方式
- HttpClient 4.3.6 使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- ajax方式,将form表单中的文件上传到数据库中的操作说明
- Android使用MultipartEntityBuilder实现类似form表单提交方式的文件上传
- 通过传统的form表单提交的方式上传文件
- 通过Ajax方式提交form表单上传文件,使用FormData进行Ajax请求
- 对 javaEye上帖子 form表单提交数据编码方式和tomcat接受数据解码方式的思考 的一点理解
- 通过传统的form表单提交的方式上传文件
- ANDROID使用MULTIPARTENTITYBUILDER实现类似FORM表单提交方式的文件上传
- 使用ajax提交form表单,包括ajax文件上传的两种方式
- form表单初始化FormData对象方式上传文件
- springmvc-普通form表单提交 4000 方式实现文件上传
- Android文件上传可用于Form表单提交方式(适用于所有网络框架)
- 传统form表单提交方式的文件上传与文件存储
- 对 javaEye上帖子 form表单提交数据编码方式和tomcat接受数据解码方式的思考 的一点理解
- 关于Form表单运用上传文件以及向后台传值的理解
- 表单form的信息传输方式post与get的区别
- jquery表单验证插件 jquery.form.js 支持文件上传~
- 理解Form中get和post的两种方式