欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP文件上传

程序员文章站 2022-03-20 13:18:45
开发中需要上传图片、音乐、视频等等,这种上传传递是二进制数据。 1.1客户端上传文件 文件域: 表单的enctype属性: 默认情况下,表单传递是字符流,不能传递二进制流,通过设置表单的enctype属性传递复合数据。 enctype属性的值有: application/x-www-form-url ......

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

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