php文件上传中会用到$_FILES系统函数
一、$_FILES系统函数
PHP编程语言中的常见的$_FILES系统函数用法有:
$_FILES[‘myFile‘][‘name‘] 显示客户端文件的原名称。
$_FILES[‘myFile‘][‘type‘] 文件的 MIME 类型,例如"image/gif"。
$_FILES[‘myFile‘][‘size‘] 已上传文件的大小,单位为字节。
$_FILES[‘myFile‘][‘tmp_name‘] 储存的临时文件名,一般是系统默认。
二、常见函数
通过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 /** * 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']; //服务器上临时文件名 $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 ''; } }
原文地址:http://blog.csdn.net/isalvador/article/details/39992015