首页 > 开发 > PHP > 正文

php文件上传 你真的掌握了吗

2024-05-04 22:50:48
字体:
来源:转载
供稿:网友

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己死磕的态度。细微之处不放过,多敲多练是王道。
学习就像爬山,得一步一步来,首先给自己定一个小目标,然后再坚持不懈地往高出攀爬,最终到达最顶峰。
请仔细斟酌上面两句忠告

一、我的准备情况说明。

编辑器:sublime text3(用什么编辑器看自己爱好)
服务器构建:使用phpstudy2014构建服务器,服务器文件存储在我自身电脑D盘的www文件中。(安装phpstudy会自动生成www文件,安装在哪个盘自己做主)。运行phpstudy,通过在浏览器地址栏输入localhost可以访问服务器中文件。
上传文件的过程:浏览器在客户端上传文件,点击提交,文件被传送给服务器中的某个php文件进行处理,该php对该上传文件保存到服务器。

二、创建表单

请看我的html代码

enctype

在Form元素的语法中,EncType表明提交数据的格式 用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。enctype有三种:
1、application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
2、multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。
3、 text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。 
补充(随便看看就好):orm的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。 当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。 当action为post时候,浏览器把form数据封装到http body中,然后发送到server。 如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。

有点难理解。
总归就记住两句话:如果input标签中有type=file,则enctype=multipart/form-data。如果没有type=file一般情况下使用application/x-www-form-urlencoded。
文件上传时都要将数据进行一定转化才能上传到服务器,application/x-www-form-urlencoded和multipart/form-data两者之间的区别就在与转化编码方式不同。

三、创建php文件用于处理上传的文件。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表