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 '';
} }

php上传图片到server的更多相关文章

  1. 使用html5 FileReader获取图片,并异步上传到server(不使用iframe)

    使用html5 FileReader获取图片,并异步上传到server(不使用iframe) 原理: 1.使用FileReader 读取图片的base64编码 2.使用ajax.把图片的base64编 ...

  2. Android上传图片之调用系统拍照和从相冊选择图片

    Android上传图片之调用系统拍照和从相冊选择图片 本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015 ...

  3. 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)

    使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)   原理: 1.使用FileReader 读取图片的base64编码 2.使用ajax,把图片的base64编码 ...

  4. 【项目相关】MVC中将WebUploader进行封装

    昨天初步将webuploader用在了项目中,但紧接着就发现了一个问题,每一个页面都需要写那么多初始化webUploader的代码,这样肯定是我不能接受的,于是花了半天时间对该控件进行了封装. 最后, ...

  5. Thinkphp编辑器扩展类kindeditor用法

    一, 使用前的准备. 使用前请确认你已经建立好了一个Thinkphp站点项目. 1,Keditor.class.php和JSON.class.php 是编辑器扩展类文件,将他们拷贝到你的站点项目的Th ...

  6. 把上传过来的多张图片拼接转为PDF的实现代码

    以下是把上传过来的多张图片拼接转为PDF的实现代码,不在本地存储上传上来的图片,下面是2中做法,推荐第一种,把pdf直接存储到DB中比较安全. 如果需要在服务器上存储客户端上传的文件时,切记存储文件时 ...

  7. iOS Framework: Introducing MKNetworkKit

    MKNetworkKit介绍,入门.翻译 这片文章也有塞尔维亚-克罗地亚语(由Jovana Milutinovich翻译)和日语(由@noradaiko翻译)  假设有个一个网络库可以自己主动的为你处 ...

  8. html页面中拍照和上传照片那些事儿(一)

    本文为原创,转载请注明出处: cnzt  文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6709037.html  一. 思路: <input type= ...

  9. android 随手记之文件+參数上传请求

    第一步:须要两个jar的支持,稍后以下给会出下载地址. 第二步:建立一个project 以下贴出最基本的代码 package com.example.testpaizhao; import java. ...

随机推荐

  1. 怎么去掉word标题前的黑点

    原文地址:http://jingyan.baidu.com/article/9c69d48f593c5b13c9024e2c.html 我们在使用word时,标题前总是出现黑点,其实这个黑点在打印时是 ...

  2. 使用LINQ查询非泛型类型

    原文地址:http://www.cnblogs.com/buzz/archive/2009/04/23/1442159.html using System;using System.Collectio ...

  3. linux之普通用户与root用户之间切换

  4. hdu 1698 Just a Hook_线段树

    题意:给你个n,表示区间[1,n],价值初始为1,给你m段区间和价值,更新区间,区间价值以最后更新为准,问更新后区间价值总和为多少 思路:两种方法,可以先存下来,倒过来更新,一更新节点马上跳出,比较快 ...

  5. ls命令 ls -trl

    每天一个linux命令(1):ls命令   ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件 ...

  6. hdu 5199 Gunner(STL之map,水)

    Problem Description Long long ago, there is a gunner whose name is Jack. He likes to go hunting very ...

  7. Swift主题色顶级解决方案

    一.常规主题色使用点 应用在发布前都会对主题色进行设置,以统一应用的风格(可能有多套主题).在主题色设置上有几个方面,如下: 1. TabBar部分,设置图片高亮.文本高度颜色2. Navigatio ...

  8. CSDN博文大赛火爆开启

    俗话说的好,程序猿会写博,谁也挡不住! 是不是每一个开发人员都能写出好博文,这个非常难说,但能够肯定的是,能写出好博文的,一定是优秀的程序猿! 写作即思考,养成写博文的习惯,既能帮自己整理技术思路,也 ...

  9. 【递推】【HDU2585】【hotel】

    Hotel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...

  10. Type.GetType()在跨程序集反射时返回null的解决方法

    在开发中,经常会遇到这种情况,在程序集A.dll中需要反射程序集B.dll中的类型.如果使用稍有不慎,就会产生运行时错误.例如使用Type.GetType("BNameSpace.Class ...