zoukankan      html  css  js  c++  java
  • php上传图片到server

    php文件上传中会用到$_FILES系统函数

    一、$_FILES系统函数

    PHP编程语言中的常见的$_FILES系统函数使用方法有:
    $_FILES['myFile']['name'] 显示client文件的原名称。
    $_FILES['myFile']['type'] 文件的 MIME 类型,比如"image/gif"。
    $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
    $_FILES['myFile']['tmp_name'] 储存的暂时文件名称,通常是系统默认。

    二、常见函数

    PHP编程语言中的常见的$_FILES系统函数使用方法有:
    $_FILES['myFile']['name'] 显示client文件的原名称。
    $_FILES['myFile']['type'] 文件的 MIME 类型,比如"image/gif"。
    $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
    $_FILES['myFile']['tmp_name'] 储存的暂时文件名称,通常是系统默认。
    $_FILES['myFile']['error'] 该文件上传相关的错误代码。下面为不同代码代表的意思:
    0; 文件上传成功。
    1; 超过了文件大小php.ini中即系统设定的大小。
    2; 超过了文件大小MAX_FILE_SIZE 选项指定的值。
    3; 文件仅仅有部分被上传。
    4; 没有文件被上传。
    5; 上传文件大小为0。
    三、php文件上传

    通过form上传文件,首先须要标记<form action="setting.php" enctype="multipart/form-data" method="post">。以下的html代码:

    <form action="setting.php" enctype="multipart/form-data" method="post">
          <div class="left">
            商家店铺名:<br/>
            <input name="sjname" class="input1" type="text" ><br/>
    		联系电话:<br/>
            <input name="sjphone" class="input1" type="text" ><br/>
    		QQ:<br/>
            <input name="sjqq" class="input1" type="text" ><br/>
            广告语:<br/>
            <input name="sjad" class="input1" type="text" placeholder="20字以内" ><br/>
          </div>
          <div class="right">
            上传封面图:(建议320*120)<br/>
            <input type="text" readonly="readonly" name="file_name" id="file_name" class="fileinput"/>
    		<input type="file" name="img_file" style="display:none" onchange="file_change(this.value)"/>
    		<input type="button" value="浏 览" onclick="img_file.click();" name="get_file" class="liulan"/><br/>
    		商家简单介绍:<br/>
            <textarea name="sjbrief" class="textarea" placeholder="100字以内" ></textarea>
          </div>
          <div class="clear"> </div>
            <p>
            <input class="buttonsave" type="submit" value="保存设置" />|<a style='text-decoration:none;' href="binding.php?ac=del" target ="_top"><input class="buttonquit" type="button" value="解除AP绑定"/></a>
            </p>
          </form>

    php代码例如以下:

    <?php
    /**
     * Created by PhpStorm.
     * User: funmi
     * Date: 14-9-10
     * Time: 下午6:57
     */
    include_once('./common.php');
    if($_SGLOBAL['login']==true){
        $cover_pic = upload_store_pic();
        $store_name = $_POST['sjname'];
        $tel_number = $_POST['sjphone'];
        $ad_words = $_POST['sjad'];
        $store_introduce = $_POST['sjbrief'];
        $qq_number = $_POST['sjqq'];
    
        $setarr=array(
            'cover_pic'=>$cover_pic,
            'store_name'=>$store_name,
            'tel_number'=>$tel_number,
            'ad_words'=>$ad_words,
            'store_introduce'=>$store_introduce,
            'qq_number'=>$qq_number
        );
    
        updatetable(tname('open_member_weixin_ap'),$setarr,array('apid'=>$_COOKIE['apid'],'id'=>$_COOKIE['id']));
    
        $smarty->assign('loginuser',$_COOKIE['loginuser']);
        $smarty->display('setting.dwt');
        exit();
    }
    gourl('binding.php');
    
    function upload_store_pic(){
    
        //文件保存路径
        $save_path = './uploads/store_pic/';
        if (!file_exists($save_path)) {
            mkdir($save_path);
        }
        //定义同意上传的文件扩展名
        $ext_arr = array(
            'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp')
        );
        //最大文件大小
        $max_size = 1000000;
    
        //PHP上传失败
        if (!empty($_FILES['img_file']['error'])) {
            switch($_FILES['img_file']['error']){
                case '1':
                    $error = '超过php.ini同意的大小。';
                    break;
                case '2':
                    $error = '超过表单同意的大小。';
                    break;
                case '3':
                    $error = '图片仅仅有部分被上传。';
                    break;
                case '4':
                    $error = '请选择图片。';
                    break;
                case '6':
                    $error = '找不到暂时文件夹。';
                    break;
                case '7':
                    $error = '写文件到硬盘出错。';
                    break;
                default:
                    $error = '未知错误。';
            }
            showmessage($error);
            return '';
        }
    
        //有上传文件时
        if (empty($_FILES) === false) {
            //原文件名称
            $file_name = $_FILES['img_file']['name'];
            //server上暂时文件名称
            $tmp_name = $_FILES['img_file']['tmp_name'];
            //文件大小
            $file_size = $_FILES['img_file']['size'];
            //检查文件名称
            if (!$file_name) {
                showmessage("请选择文件。");
                return '';
            }
            //检查文件夹
            if (@is_dir($save_path) === false) {
                showmessage("上传文件夹不存在。");
                return '';
            }
            //检查文件夹写权限
            if (@is_writable($save_path) === false) {
                showmessage("上传文件夹没有写权限。");
                return '';
            }
            //检查是否已上传
            if (@is_uploaded_file($tmp_name) === false) {
                showmessage("上传失败。");
                return '';
            }
            //检查文件大小
            if ($file_size > $max_size) {
                showmessage("上传文件大小超过限制。");
                return '';
            }
            //检查文件夹名
            $dir_name = empty($_GET['dir']) ? 'image' : trim($_GET['dir']);
            if (empty($ext_arr[$dir_name])) {
                showmessage("文件夹名不对。");
                return '';
            }
            //获得文件扩展名
            $temp_arr = explode(".", $file_name);
            $file_ext = array_pop($temp_arr);
            $file_ext = trim($file_ext);
            $file_ext = strtolower($file_ext);
            //检查扩展名
            if (in_array($file_ext, $ext_arr[$dir_name]) === false) {
                showmessage("上传文件扩展名是不同意的扩展名。");
                return '';
            }
    
            //新文件名称
            $new_file_name = date("YmdHis") . '_' . rand(10000, 99999) . '_apid_' . $_COOKIE['apid'] . '.' . $file_ext;
            //移动文件
            $file_path = $save_path . $new_file_name;
            if (move_uploaded_file($tmp_name, $file_path) === false) {
                showmessage("上传文件失败。");
                return '';
            }
            @chmod($file_path, 0777);
            return $file_path;
        }else{
            return '';
        }
    
    }


  • 相关阅读:
    通过设置iis在局域网中访问网页
    .NetCore集成Dapr踩坑经历
    Api跨域设置
    Win10安装.net2.0/3.0
    C# MVC 全局错误Application_Error中处理(包括Ajax请求)
    使用SignalR从服务端主动推送警报日志到各种终端(桌面、移动、网页)
    C#设计模式学习笔记:(4)建造者模式
    .NET CORE(C#) WPF简单菜单MVVM绑定
    值类型与引用类型的区别
    [博客美化]给你博客添加一个萌萌的看板娘吧
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4078852.html
Copyright © 2011-2022 走看看