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. ...
随机推荐
- C链表之创建简单静态链表
C代码: #include<stdio.h> #include<stdlib.h> #include<malloc.h> //创建简单静态链表 typedef st ...
- 网络工程 POST与GET请求方法的本质区别
POST与GET请求方法的本质区别: 第一:GET用于信息获取,它是安全的(这里安全的含义是指非修改信息),而POST是用于修改服务器上资源的请求 第二:GET请求的数据会附在URL之后,而POST把 ...
- PHP的优点
1.语法简单 2.学习成本低 3.开发效率高 4.跨平台 5.开发部署方便 6.开源框架非常丰富(如:ThinkPHP) 7.开源CMS系统非常丰富(如:Joomla,Wordpress) 8.开源网 ...
- 基于Andoird 4.2.2的同步框架源代码学习——同步提供端
Android同步框架 同步(synchronization)允许用户将远程数据下载到新的设备上,同时将设备上的帐户数据上传到远端.同步还保证用户能够看到最新的数据. 开发者自然可以通过自己的方式来设 ...
- 任务调度开源框架Quartz动态加入、改动和删除定时任务
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制.Quartz框架包括了调度器监听.作业和触发器监听.你能够配置作业和触发器监听为全局监听或者是特定于 ...
- 有用的jQuery布局插件推荐
网页设计中排版也是很重要的,但有些比较难的网页排版我们可以用一些jQuery来实现,今天文章中主要分享一些有用的jQuery布局插件,有类似Pinterest流布局插件.友荐的滑动提示块以及其它jQu ...
- jQuery Custom Selector JQuery自定义选择器
什么是JQuery的选择器呢,详见JQuery中的Selector: http://docs.jquery.com/Selectors 比如 $("div:contains('John')& ...
- EF项目中应用出现问题???
最近用EF做了个项目发现很多不便利的地方. 具体如下. 1,我是通过edmx 建模,然后通过模型生成数据库. 虽然数据库已经创建成功但是问题来了,我在加字段,和标的时候再次生成时domeo.edmx. ...
- 关于constructor与 Prototype的理解
constructor:每一个函数的Prototype属性指向的对象都包含唯一一个不可枚举属性constructor,该属性的值是这么一个对象:constructor指向了它所在的构造函数Protot ...
- linux 链接控制
如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决,vim /etc/sysctl.conf编辑文件,加入以下内容:net.ipv4.tcp_syncookies = 1net.ip ...