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. 重写 libev 的 EV_WIN32_HANDLE_TO_FD

    libev 的 EV_WIN32_HANDLE_TO_FD 默认实现是调用C库的  _open_osfhandle ,但这里有个问题是转换后,关闭 fd 就默认关闭了 handle.当它遇到 libc ...

  2. Google map v3 using simple tool file google.map.util.js v 1.2

    更新添加日志:在1.1的基础上添加marker的文字显示.测距工具. /** * GOOGLE地图开发使用工具 * @author BOONYACHENGDU@GMAIL.COM * @date 20 ...

  3. poj 3761 Bubble Sort_快速幂

    题意:问你冒泡排序第i次排序,一共排了多少次 套公式K!((K + 1) ^ (N - K) - K ^ (N - K)) #include <iostream> #include< ...

  4. SQL中如何使用UPDATE语句进行联表更新(转)

    在本例中: 我们要用表member中的name,age字段数据去更新user中的同字段名的数据,条件是当user 中的id字段值与member中的id字段值相等时进行更新. SQL Server语法: ...

  5. myeclipse 2013 git

    1. 2.添加site http://download.eclipse.org/egit/updates-2.3 3.安装 完成后,查看windows->preference的team下面有gi ...

  6. 【csdn】文章很好 - system函数遇到的问题

    system函数遇到的问题http://blog.csdn.net/yangzhenzhen/article/details/51505176

  7. .net 加密错误:填充无效,无法移除

    今天用System.Security.Cryptography加密.使用了AesManaged,报错:填充无效,无法移除.分析是解密失败,密文损坏,或者KEY,IV不正确. using (AesMan ...

  8. Excel 用row()函数 在Excel中自动添加序号,

    1.如图 2.用if条件根据产品名称判断是否有值进而序号自动添加 If(G9="","",Row()-8)

  9. Oracle 启用块跟踪

    Oracle 启用块跟踪,语法示例如下: alter database enable block change tracking using file '/u01/app/oracle/oradata ...

  10. hadoop生态圈安装详解(hadoop+zookeeper+hbase+pig+hive)

    -------------------------------------------------------------------* 目录 * I   hadoop分布式安装   * II zoo ...