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. they're hiring

    Gather Health ⋅ Careers Careers at Gather

  2. linux ar 命令的使用

    摘自http://blog.csdn.net/hxg130435477/article/details/8217247 用途说明 创建静态库.a文件.用C/C++开发程序时经常用到,但我很少单独在命令 ...

  3. vim 多窗口编辑

    本文出自   http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...

  4. C#操作项目配置文件

    前言 对于项目配置文件的读取和修改,.net 提供了ConfigurationManager(位于System.Configuration命名空间) 和WebConfigurationManager( ...

  5. log4j是什么

    一.什么是log4jLog4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事 件记录器.UNIX S ...

  6. Backup Exec Inventory 与Catalog的含义(转载)

    编录:即catalog,就是让磁带机读取磁带之前所备份过的内容的目录列表,可以让你知道之前做过什么备份,以及备份时间等详细信息. 列清单:inventory,跟编录是不同,inventory是查询磁带 ...

  7. SQL递归查询(with cte as) 物料分解

    需求 最近在做一个MRP的项目,需要根据生产下达的计划从原始无聊表中分解出成品所需要的原材料和数量. 参考 http://www.cnblogs.com/xqhppt/archive/2011/02/ ...

  8. Swift和Objective-C的差异性

    1:Type Swift提供了类型推断,不需要人工的去注释变量的类型信息,编译器会通过变量的值来推断类型.例如,编译器可以自动将该变量设置为字符串: // 自动推断,不显示 var name1 = & ...

  9. Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)

    大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...

  10. DOS下导入dmp文件到Oracle数据库

    imp usename/password@SID full=y  file= d:\data\xxxx.dmp ignore=y imp system/manager file=bible_db lo ...