宝哥软件园

你真的精通php文件的上传吗

编辑:宝哥软件园 来源:互联网 时间:2021-09-11

这里首先要说明的是,这一章内容很多,难度较大。你应该抱着打击自己的态度。多敲多练才是王道。学习就像爬山。你要先给自己定一个小目标,然后爬得更高,到达顶峰。请仔细考虑以上两条建议

一、我的准备。

编辑:威震文字3(用什么编辑器看我的爱好)服务器搭建:用phpstudy2014搭建服务器,服务器文件保存在我自己电脑D盘的www文件中。(安装phpstudy时会自动生成www文件,具体安装哪个磁盘由您决定。).运行phpstudy并在浏览器地址栏中输入localhost以访问服务器中的文件。上传文件的过程:浏览器在客户端上传文件,点击提交,文件被发送到服务器中的一个php文件进行处理,php将上传的文件保存到服务器中。

第二,创建一个表单

请看看我的html代码

enctype

在表单元素的语法中,EncType表示提交数据的格式。Enctype属性指定将数据发送回服务器时浏览器使用的编码类型。有三种类型:1。application/x-www-form-URL encoded:表单数据被编码为名称/值对。这是标准编码格式。2.multipart/form-data:表单数据被编码到消息中,页面上的每个控件都对应于消息的一部分。3.文本/纯文本:表单数据以纯文本编码,没有任何控制或格式字符。补充(只看一下):orm的enctype属性是编码的,常用的方法有两种:application/x-www-form-URL encoded和multipart/form-data,默认为application/x-www-form-URL encoded。获取操作后,浏览器将表单数据转换为字符串(名称1=值1名称2=值2.)通过使用x-www-form-urlencoded的编码方法,然后将此字符串追加到url,并使用?拆分并加载这个新的网址。当动作发布后,浏览器将表单数据封装到http主体中,然后将其发送到服务器。如果没有type=file控件,则使用默认应用程序/x-www-form-urlencoded。但是,如果有type=file,将使用多部分/表单数据。浏览器会将整个表单以控件为单位进行划分,并在每个部分添加Content-Disposition(表单-数据或文件)、Content-Type(默认文本/纯文本)、name(控件名)等信息,并添加边界。

有点难以理解。始终记住两句话:如果输入标签中有type=file,则enctype=multipart/form-data。通常,如果没有type=file,则使用application/x-www-form-URL encoded。上传文件时,数据必须转换到服务器。application/x-www-form-URL encoded和multipart/form-data的区别在于转换编码方法不同。

第三,创建php文件来处理上传的文件。

上传文件后的效果如下:

每个上传的文件都有名称、类型、大小和tmp_name等信息。文件上传后,与文件相关的信息存在于数组变量FILES中。_ FILES ["myfile"] ["name"]相当于访问多维数组。files首先获取表单名称为myfile的input上传的文件数据,然后访问名称、类型、大小、错误等数据。_FILES['myfile']['error']用于处理文件上传不正常的情况,例如文件大小超过上传限制。如果文件[“我的文件”] [“错误”]=0,则文件正常上传。_ files [“我的文件”] [“错误”] 0表示文件未正常上传。文件[“我的文件”] [“错误”]=1上传的文件超过了服务器限制的值,例如超过了服务器空间的大小。_ files ["myfile"] ["error"]=2超出了浏览器的上载限制。$ _文件[“my file”][“error”]=3仅上传部分文件

文件[“我的文件”] [“错误”]=4没有要上传的文件。_ files【“我的文件”】【“错误”】也可以是5、6、7、8,这里不赘述,只知道当大于0时,说明上传这个文件有错误。

上传限制

通常,服务器会限制服务器上传文件的大小或类型。在上面php代码的基础上,我们增加了上传文件代码的限制。熟悉几个函数的用法:explode()函数用于拆分字符串。例如,分解(“.”,“aaa。HTML)将字符串分成两个字符串,“aaa”和“HTML”,它们按顺序存储在同一个数组中。End()获取数组中最后一个元素的值。In_array()在数组中查找一个元素,看它是否存在。如果存在,则返回true,如果不存在,则返回false。

?Php//步骤1:确保服务器指定上传到服务器的文件类型。这里我们只允许上传以下类型的图片。$allowedExts=array('gif ',' jpeg ',' jpg ',' png ');//允许上传图片的后缀//第2部分:获取上传文件的名称,通过explorde()函数将其划分为字符串形式的数组。$temp=爆炸('.',$ _ FILES[' my FIle '][' name ']);echo $ _ FILES[' FIle '][' size '];$ extension=end($ temp);//end函数用于获取数组中最后一个元素的值。//第三步:列出条件如果($ _ FILES[' my file '][' type ']=' image/gif ')|($ _ FILES[' my file '][' type ']=' image/JPEG ')|($ _=' image/jpg ')|($ _ FILES[' my file '][' type ']=' image/pj peg ')|($ _ FILES[' my file '][' type ']=' image/x-PNG ')|($ _ FILES[' my file '))|($ _ FILES[' my file ')$ _ files ['myfile'] ['error'].//比如服务器空间不足,只能上传文件就会出错。} else {echo '上传文件名: '。$ _ files ['我的文件'] ['name']。br ';回显“文件类型:”。$ _ files ['myfile'] ['type']。br ';Echo的文件大小为: '。($ _ files ['myfile'] ['size']/1024),'kbbr ';echo文件的临时存储位置是:’。$ _ files ['myfile'] ['tmp _ name']。br ';}}else{ echo '非法文件格式';}?第四,保存上传的文件

文件上传后,会保存在临时位置。当脚本结束时,它就会消失。如果我们想将它永久保存在服务器中,我们需要将它保存在另一个位置。file _ exists("上传/"。文件["file"] ["name"])来检查文件或目录是否存在。moveuploaded file(_ FILES[' FIle '][' tmp _ name '],' upload/'。$ _ FILES[" my FIle "][" name "]);将上传的文件从临时位置传输到服务器空间。

?Php//步骤1:确保服务器指定上传到服务器的文件类型。这里我们只允许上传以下类型的图片。$allowedExts=array('gif ',' jpeg ',' jpg ',' png ');//允许上传图片的后缀//第2部分:获取上传文件的名称,通过explorde()函数将其划分为字符串形式的数组。$temp=爆炸('.',$ _ FILES[' my FIle '][' name ']);echo $ _ FILES[' my filefile '][' size '];$ extension=end($ temp);//end函数用于获取数组中最后一个元素的值。//步骤3:列出if($ _ FILES[' my file '][' type ']=' image/gif ')| |($ _ FILES[' my file '][' type ']=' image/JPEG ')|($ _ jpg ')|($ _ FILES[' my file '][' type ']=' image/pj peg ')|($ _ FILES[' my file ']][' type ']=' image/x-png ')|($ _ FILES[' my file '][' type '$ _ files ['myfile'] ['error'].} else {echo '上传文件名: '。$ _ files ['我的文件'] ['name']'br ';回显“文件类型:”。$ _ files ['myfile'] ['type']'br ';Echo的文件大小为: '。($ _ files ['myfile'] ['size']/1024)。kbbr ';echo文件的临时存储位置是:’。$ _ files ['myfile'] ['tmp _ name']'br ';//确定当前目录下(即www文件夹中)的上传目录(自己创建,用自己的名字命名)是否存在于此文件中。//如果没有上传目录,需要创建,上传目录权限为777IF (file _ exists ('upload/')。$ _ files ['我的文件'][' name ']);} else {//如果文件中不存在上传目录,则将文件上传到move _ uploaded _ file($ _ files[' my file '][' tmp _ name '],' upload/')。上传目录下的$ _ files[' file '][' name ']);//echo“文件存储在:处。”上传/'。$ _ files ['我的文件'][' name '];} }}else{ echo '非法文件格式';}?以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+