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文件上传
通过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的更多相关文章
- 使用html5 FileReader获取图片,并异步上传到server(不使用iframe)
使用html5 FileReader获取图片,并异步上传到server(不使用iframe) 原理: 1.使用FileReader 读取图片的base64编码 2.使用ajax.把图片的base64编 ...
- Android上传图片之调用系统拍照和从相冊选择图片
Android上传图片之调用系统拍照和从相冊选择图片 本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015 ...
- 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)
使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe) 原理: 1.使用FileReader 读取图片的base64编码 2.使用ajax,把图片的base64编码 ...
- 【项目相关】MVC中将WebUploader进行封装
昨天初步将webuploader用在了项目中,但紧接着就发现了一个问题,每一个页面都需要写那么多初始化webUploader的代码,这样肯定是我不能接受的,于是花了半天时间对该控件进行了封装. 最后, ...
- Thinkphp编辑器扩展类kindeditor用法
一, 使用前的准备. 使用前请确认你已经建立好了一个Thinkphp站点项目. 1,Keditor.class.php和JSON.class.php 是编辑器扩展类文件,将他们拷贝到你的站点项目的Th ...
- 把上传过来的多张图片拼接转为PDF的实现代码
以下是把上传过来的多张图片拼接转为PDF的实现代码,不在本地存储上传上来的图片,下面是2中做法,推荐第一种,把pdf直接存储到DB中比较安全. 如果需要在服务器上存储客户端上传的文件时,切记存储文件时 ...
- iOS Framework: Introducing MKNetworkKit
MKNetworkKit介绍,入门.翻译 这片文章也有塞尔维亚-克罗地亚语(由Jovana Milutinovich翻译)和日语(由@noradaiko翻译) 假设有个一个网络库可以自己主动的为你处 ...
- html页面中拍照和上传照片那些事儿(一)
本文为原创,转载请注明出处: cnzt 文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6709037.html 一. 思路: <input type= ...
- android 随手记之文件+參数上传请求
第一步:须要两个jar的支持,稍后以下给会出下载地址. 第二步:建立一个project 以下贴出最基本的代码 package com.example.testpaizhao; import java. ...
随机推荐
- 我(webabcd)的文章索引
[最后更新:2014.08.28] 重新想象 Windows Store Apps 系列文章 重新想象 Windows 8 Store Apps 系列文章 重新想象 Windows 8 Store A ...
- 基于最大最小距离的分类数目上限K确定的聚类方法
聚类是数据挖掘很重要的组成部分.而大多数聚类算法都需要事先确定分类数目K.而本文是在实际 情况下确定分类数目K的上限.进而对数据样本进行自动分类. 首先介绍下最大最小距离算法: 设样本集为X{x(1) ...
- hdu 1757 A Simple Math Problem_矩阵快速幂
题意:略 简单的矩阵快速幂就行了 #include <iostream> #include <cstdio> #include <cstring> using na ...
- jvm莫名退出问题解决
当jvm莫名退出,没有留下任何任何信息的时候,在centos的 /var/log/dmesg文件中,或许可以找到一些端倪
- js callback函数
A callback is a function that is passed as an argument to another function and is executed after its ...
- MVC 5 + EF 6
(一) ??运算符 C#中两个问号(“?”)的作用是判断“?”左边的对象是否为null,如果不为null则使用“?”左边的对象,如果为null则使用“?”右边的对象. (二)VS安装Entity Fr ...
- 跳跃表 C#
虽然avl树和红黑树在数据搜索和排序方面都是有效的数据结构,但是都显得特别麻烦,跳跃表就显得特别简单,虽然简单 不影响他性能,在平均情况下,其插入.删除.查找数据时间复杂度都是O ...
- BestCoder Round #75 1003 - King's Order
国王演讲后士气大增,但此时战争还没有结束,国王时不时要下发命令. 由于国王的口吃并没有治愈,所以传令中可能出现:“让第三军-军-军,到前线去” 这样的命令.由于大洋国在军队中安插了间谍 , 战事紧急, ...
- 浏览器文档播放Shockwave Flash 插件问题
浏览器被提示shockwave flash crashed怎么办?在使用浏览器的时候经常被提示shockwave flash crashed,flash插件崩溃,网页就会出现一些无法显示的文件,下面绿 ...
- VB中后台打开Excel文件实现代码
某些时候需要打开Excel文件来获取或者写入数据,但又不希望跳出打开的Excel文件窗口,可以用下面的代码: Dim eb As New excel.Application, wb as excel. ...