首页 技术 正文
技术 2022年11月16日
0 收藏 765 点赞 2,901 浏览 3122 个字

文件上传:
    1.单个文件上传
    2.多个文件上传
    一.PHP配置文件中和上传有关的选项
    file_uploads=on
    upload_max_filesize=    最大不要超过服务器的内存
    upload_tmp_dir=     上传文件的临时路径
    二.上传表单需要注意事项
        1.如果有文件操作,表单的提交方式必须是POST提交
        2.表单上传需要使用type为file的表单
        3.enctype=”multipart/form-data”只要有文件上传就要改为这个值,其他情况可以使用默认值,用来指定表单编码的数据方式,让服务器知道,我们需要传递一个文件并带有一些常规的表单信息
        4.建议添加一个MAX_FILE_SIZE隐藏表单,值得单位也是字节

三.PHP处理上传的数据
        如果是文件上传的数据则使用$_FILES处理上传的文件
        $_POST接受非上传的数据
        
        //上传文件传递的信息
        Array
        (
        [pic] => Array
            (
                [name] => 1.jpg
                [type] => image/jpeg
                [tmp_name] => uploadtemp\phpFFAB.tmp
                [error] => 0
                [size] => 9992
            )
        1.使用$_FILES[“表单名”][“error”]检查上传是否出错
            UPLOAD_ERR_OK
                其值为 0,没有错误发生,文件上传成功。
            UPLOAD_ERR_INI_SIZE
                其值为 1,上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
            UPLOAD_ERR_FORM_SIZE
                其值为 2,上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
            UPLOAD_ERR_PARTIAL
                其值为 3,文件只有部分被上传。
            UPLOAD_ERR_NO_FILE
                其值为 4,没有文件被上传。
            UPLOAD_ERR_NO_TMP_DIR
                其值为 6,找不到临时文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
            UPLOAD_ERR_CANT_WRITE
                其值为 7,文件写入失败。PHP 5.1.0 引进。
        2.使用$_FILES[“表单名”][“size”]限制大小,单位是字节 1M=1000000
        
        3.使用$_FILES[“表单名”][“type”]或是文件的扩展名限制类型
        
        4.将上传后的文件名改名

实例:

view.html

<html>    <head>        <title>File Upload</title>    </head>    <body>        <form action="upload.php" method="post" enctype="multipart/form-data">        shopname:<input type="text" name="shopname" /><br>        shopprice:<input type="text"  name="price" /><br>        shopnum:<input type="text" name="num" /><br>        <input type="hidden" name="MAX_FILE_SIZE" value="20000000" />        shoppic:<input type="file" name="pic"/><br>        <input type="submit" name="sub" value="添加商品" /><br>        </form>    </body></html>

upload.php

<?php/*echo "<pre>";print_r($_POST);print_r($_FILES);echo "</pre>";Array        (        [pic] => Array            (                [name] => 1.jpg                [type] => image/jpeg                [tmp_name] => D:\uploadtemp\phpFFAB.tmp                [error] => 0                [size] => 9992            )*///使用$_FILES["pic"]["error"]检查上传是否出错if($_FILES["pic"]["error"]>0){    switch($_FILES["pic"]["error"]){        case 1:        echo "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值<br>";        break;        case 2:        echo "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。<br>";        break;        case 3:        echo "文件只有部分被上传。<br>";        break;        case 4:        echo "没有文件被上传。<br>";        break;        default:        echo "未知错误<br>";    }}//使用$_FILES["pic"]["size"]限制大小,单位是字节 1M=1000000//echo $_FILES["pic"]["size"];$maxsize=50000;  //50kif($_FILES["pic"]["size"]>$maxsize){    echo "上传的文件太大,不能超过{$maxsize}字节";    exit;}//使用$_FILES["pic"]["type"]或是文件的扩展名限制类型/*list($dl,$xl)=explode("/", $_FILES["pic"]["type"]);if($dl!="image"){    echo "请上传一个图片";    exit;}*///按.将文件名分割$arr=explode(".",$_FILES["pic"]["name"]);//取后缀名$hz=$arr[count($arr)-1];//echo $hz;//设置上传图片允许的类型$allowtype=array("png","jpg","jpeg");//判断后缀是否在要求的图片类型中if(!in_array($hz,$allowtype)){    echo "这是不允许的类型";    exit;}//将上传后的文件名改名//将临时位置的文件移动到指定的目录上//制作上传文件的随机名$filepath="./upload/";   //随机名路径$randname=date("Y").date("m").date("d").date("H").date("i").date("s").rand(100,999).".".$hz;    //随机文件名//判断是否是上传文件if(is_uploaded_file($_FILES["pic"]["tmp_name"])){    //移动上传文件有专用的函数    if(move_uploaded_file($_FILES["pic"]["tmp_name"],$filepath.$randname)){        echo "上传文件成功!";    }else{        echo "上传失败!";    }}else{    echo "不是一个上传文件";}//echo "上传文件成功!<br>";?>
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,946
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,472
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,285
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,101
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,733
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,768