加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

详细解释了如何使用和操作php上传文件的应用程序

发布时间:2023-11-14 16:30:19 所属栏目:PHP教程 来源:
导读:php文件上传的应用和原理详解

1.form 标签 enctype 属性。

2.$_FILES 系统函数。 //将上传内容转换为数组。

3.move_uploaded_file 函数。 //移动存放在缓存文件夹里的上传文件到指定文件夹。

4.is_u
php文件上传的应用和原理详解
 
1.form 标签 enctype 属性。
 
2.$_FILES 系统函数。 //将上传内容转换为数组。
 
3.move_uploaded_file 函数。 //移动存放在缓存文件夹里的上传文件到指定文件夹。
 
4.is_uploaded_file 函数。 //判断是否存在。
 
---------------------------------------
 
1.form 标签
 
格式:
 
      未选择任何文件
 
2.$_FILES 系统函数
 
$_FILES['name'] //客户端上传文件原文件名。
 
$_FILES['type'] //文件的MIME类型,如:“image/gif”
 
$_FILES['size'] //上传文件大小,字节为单位。
 
$_FILES['tmp_name'] //临时文件名,一般为默认。
 
$_FILES['error'] //上传相关情况代码(0:成功,1:超过php.ini设置大小。2:超过PHP文件代码指定大小。3:文件只有部分被上传。4:没有文件被上传。5:上传文件大小为0。)
 
3.move_uploaded_file 函数
 
上传后移动文件到目标位置的函数
 
move_uploaded_file(临时文件,目标位置和文件名;)
 
4.is_uploaded_file 函数
 
判断上传MIME类型的文件函数
 
is_uploaded_file(MIME);
 
---------------------------------------
 
实例:
 
 代码如下
 
1  
 
未选择任何文件  
 
注意
 
1、表单中enctype=”multipart/form-data”必须指定,以便让服务器知道文件带有常规的表单信息。
 
2、必须有一个可以设置上传文件最大长度的表单区域,即允许上传文件的最大值(按字节计算),它是隐藏值域,即max_file_size,通过设置其Value(值)可以限制上传文件的大小,避免用户在花时间等待上传大文件之后才发现该文件太大了的麻烦。但是一般别人可以绕过这个值,所以安全起见,最好是在php.ini文件中配置upload_max_filesize选项,设定文件上传的大小,默认是2M
 
 代码如下
 
1 function uploadfile($type,$name,$ext,$size,$error,$tmp_name,$targetname,$upload_dir)
 
{
 
    $MAX_SIZE = 2000000;
 
    $FILE_MIMES = array('image/pjpeg','image/jpeg','image/jpg','image/gif','image/png');
 
    $FILE_EXTS = array('.jpg','.gif','.png','.JPG','.GIF','.PNG');
 
2     $file_path = $upload_dir.$targetname;
 
    if(!is_dir($upload_dir))
 
    {
 
        if(!mkdir($upload_dir))
 
            die("文件上传目录不存在并且无法创建文件上传目录");
 
        if(!chmod($upload_dir,0755))
 
            die("文件上传目录的权限无法设定为可读可写");
 
    }
 
    if($size>$MAX_SIZE)
 
        die("上传的文件大小超过了规定大小");
 
3     if($size == 0)
 
        die("请选择上传的文件");
 
4     if(!in_array($type,$FILE_MIMES) || !in_array($ext,$FILE_EXTS))
 
        die("请上传符合要求的文件类型");
 
5     if(!move_uploaded_file($tmp_name, $file_path))
 
        die("复制文件失败,请重新上传");
 
6     switch($error)
 
    {
 
        case 0:
 
            return ;
 
        case 1:
 
            die("上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值");
 
        case 2:
 
            die("上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值");
 
        case 3:
 
            die("文件只有部分被上传");
 
        case 4:
 
            die("没有文件被上传");
 
    }
 
}
 
如何上传多个文件?比如同时上传3个文件
 
 代码如下
 
1 只需将
 
2
 
 未选择任何文件
 
3 改成
 
4 未选择任何文件
 
未选择任何文件
 
未选择任何文件
 
对应的在调用此函数时,$_FILES['userfile']['name'][0],代表第一个文件的相关文件信息,依此类推,其他也一样。

一些关于php性能配置,有必须时我们也可以修改一下
 
max_execution_time = 30 ;每个PHP页面运行的最大时间值(秒),默认30秒
 
max_input_time = 60 ;每个PHP页面接收数据所需的最大时间,默认60秒
 
memory_limit = 128m ;每个PHP页面所吃掉的最大内存,默认128M。如果觉得小了,可以设置大点。128够用。
 
max_execution_time = 600
 
max_input_time = 600
 
upload_max_filesize = 32m
 
post_max_size = 32m
 
如果文件大小限制了我们可以如下解决
 
打开php.ini,首先找到
 
file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开
 
upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
 
upload_max_filesize = 8m ;望文生意,即允许上传文件大小的最大值。默认为2M
 
post_max_size = 8m ;指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
 
一般地,设置好上述四个参数后,上传<=8M的文件是不成问题,在网络正常的情况下。
 
但如果要上传>8M的大体积文件,只设置上述四项还一定能行的通。

进一步配置以下的参数
 
max_execution_time = 600 ;每个PHP页面运行的最大时间值(秒),默认30秒
 
max_input_time = 600 ;每个PHP页面接收数据所需的最大时间,默认60秒
 
memory_limit = 8m ;每个PHP页面所吃掉的最大内存,默认8M
 
把上述参数修改后,在网络所允许的正常情况下,就可以上传大体积文件了
 
max_execution_time = 600
 
max_input_time = 600
 
memory_limit = 32m
 
file_uploads = on
 
upload_tmp_dir = /tmp
 
upload_max_filesize = 32m
 
post_max_size = 32m
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章