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

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个文件

 

版权声明:本文为shineguang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shineguang/p/10987291.html