PHP文件上传

Posted shineguang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP文件上传相关的知识,希望对你有一定的参考价值。

开发中需要上传图片、音乐、视频等等,这种上传传递是二进制数据。

1.1客户端上传文件

        文件域:

<input type="file" name="image">

           表单的enctype属性:

          默认情况下,表单传递是字符流,不能传递二进制流,通过设置表单的enctype属性传递复合数据。 

          enctype属性的值有:

  1. application/x-www-form-urlencoded:【默认】,表示传递的是带格式的文本数据。

  2. multipart/form-data:复合的表单数据(字符串,文件),文件上传必须设置此值

  3. text/plain:用于向服务器传递无格式的文本数据,主要用户电子邮件

1.2服务器接收文件

        超全局变量$_FILES是一个二维数组,用来保存客户端上传到服务器的文件信息。二维数组的行是文件域的名称,列有5个。

        1、$_FILES[][‘name’]:上传的文件名

        2、$_FILES[][‘type]:上传的类型,这个类型是MIME类型(image/jpeg、image/gif、image/png)

        3、$_FILES[][‘size’]:文件的大小,以字节为单位

        4、$_FILES[][‘tmp_name’]:文件上传时的临时文件

        5、$_FILES[][‘error’]:错误编码(值有0、1、2、3、4、6、7)0表示正确

1.3将上传文件移动到指定位置

       函数:

move_uploaded_file(临时地址,目标地址)

         代码:

<body>
<?php
if(!empty($_POST)) 
    if($_FILES[‘face‘][‘error‘]==0)  //上传正确
        //文件上传
        move_uploaded_file($_FILES[‘face‘][‘tmp_name‘],‘./‘.$_FILES[‘face‘][‘name‘]);
    else
        echo ‘上传有误‘;
        echo ‘错误码:‘.$_FILES[‘face‘][‘error‘];
    

?>
<form method="post" action="" enctype=‘multipart/form-data‘>
    <input type="file" name="face">
    <input type="submit" name="button" value="上传">
</form>
</body>

1.4与文件上传有关的配置         

             post_max_size = 8M:表单允许的最大值

            upload_max_filesize = 2M:允许上传的文件大小

            upload_tmp_dir =F:\wamp\tmp:指定临时文件地址,如果不知道操作系统指定

            file_uploads = On:是否允许文件上传

             max_file_uploads = 20:允许同时上传20个文件

 

以上是关于PHP文件上传的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 PHP,预期文件结尾,我错在哪里?

android的自带的httpClient 怎么上传文件

PHP常用代码片段

Alamofire 文件上传出现错误“JSON 文本未以数组或对象开头,并且允许未设置片段的选项”

PHP文件上传代码用法

php文件上传漏洞代码只允许上传图片