【jQuery无刷新上传插件Uploadify】
[TOC]
## 插件描述:
上传功能在我们的程序中是经常会用到的,而传统的http上传在安全性和文件大小上都会有一定的限制,而且不能看到上传进度。所以就出现了采用Flash和其他一些方式来实现人性化的上传效果。 那么今天我要给大家介绍额就是一款jQuery的无刷新上传插件 -Uploadify,他有免费版和收费版两种,免费版的是用Flash实现的,而收费版的是用html5实现的
Uploadify是一个jQuery插件,可以轻松地添加多个文件上传功能到网站。两个不同的版本(HTML5和Flash)让您可以灵活地选择合适的实现为您的网站和后备方法使其优雅地降级。
## 使用步骤
### 1、下载 Uploadify压缩包
### 2、解压文件,将以下的文件复制到自己的网站中
> browse-btn.png
jquery.uploadify.min.js
uploadify.css
uploadify.swf
uploadify-cancel.png
### 3、引入以下js和css文件
```
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="/jquery.uploadify-3.1.min.js"></script>
```
### 4、在页面中添加一个file文本框
```
<input type="file" name="file_upload" id="file_upload">
```
### 5、加入以下代码初始化插件
```
//头像上传 Uploadify 插件
$('#face').uploadify({
swf : PUBLIC + '/Uploadify/uploadify.swf', //引入Uploadify核心Flash文件
uploader : uploadUrl, //PHP处理脚本地址
width : 120, //上传按钮宽度
height : 30, //上传按钮高度
buttonImage : PUBLIC + '/Uploadify/browse-btn.png', //上传按钮背景图地址
fileTypeDesc : 'Image File', //选择文件提示文字
fileTypeExts : '*.jpeg; *.jpg; *.png; *.gif', //允许选择的文件类型
formData : {'session_id' : sid},
//上传成功后的回调函数
onUploadSuccess : function (file, data, response) {
eval('var data = ' + data);
if (data.status) {
$('#face-img').attr('src', ROOT + '/Uploads/Face/' + data.path.max);
$('input[name=face180]').val(data.path.max);
$('input[name=face80]').val(data.path.medium);
$('input[name=face50]').val(data.path.mini);
} else {
alert(data.msg);
}
}
});
```
其中 swf 为 uploadify.swf 文件的路径
uploader 为 后台处理程序的路径
其它的参数大家可以参考 文档 在此我就不做讲述了
整个html文件类似下面的代码
```
<title>
My Uploadify Implementation
</title>
<link rel="stylesheet" type="text/css" href="uploadify.css">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="jquery.uploadify-3.1.min.js"></script>
<script type="text/javascript">
$(function() {
$('#file_upload').uploadify({
'swf' : 'uploadify.swf',
'uploader' : 'uploadify.php'
// Your options here
});
});
</script>
<script type='text/javascript'>
var address = "{$user.location}";
var constellation = "{$user.constellation}";
var PUBLIC = '__PUBLIC__';
var uploadUrl = '{:U("Common/uploadFace")}';
var sid = '{:session_id()}';
var ROOT = '__ROOT__';
</script>
<input type="file" name="file_upload" id="file_upload">
```
### 6、后台处理
```
/**
* 头像上传
*/
Public function uploadFace () {
if (!$this->isPost()) {
halt('页面不存在');
}
$upload = $this->_upload('Face', '180,80,50', '180,80,50');
echo json_encode($upload);
}
```
```
/**
* 图片上传处理
* @param [String] $path [保存文件夹名称]
* @param [String] $width [缩略图宽度多个用,号分隔]
* @param [String] $height [缩略图高度多个用,号分隔(要与宽度一一对应)]
* @return [Array] [图片上传信息]
*/
Private function _upload ($path, $width, $height) {
import('ORG.Net.UploadFile'); //引入ThinkPHP文件上传类
$obj = new UploadFile(); //实例化上传类
$obj->maxSize = C('UPLOAD_MAX_SIZE'); //图片最大上传大小
$obj->savePath = C('UPLOAD_PATH') . $path . '/'; //图片保存路径
$obj->saveRule = 'uniqid'; //保存文件名
$obj->uploadReplace = true; //覆盖同名文件
$obj->allowExts = C('UPLOAD_EXTS'); //允许上传文件的后缀名
$obj->thumb = true; //生成缩略图
$obj->thumbMaxWidth = $width; //缩略图宽度
$obj->thumbMaxHeight = $height; //缩略图高度
$obj->thumbPrefix = 'max_,medium_,mini_'; //缩略图后缀名
$obj->thumbPath = $obj->savePath . date('Y_m') . '/'; //缩略图保存图径
$obj->thumbRemoveOrigin = true; //删除原图
$obj->autoSub = true; //使用子目录保存文件
$obj->subType = 'date'; //使用日期为子目录名称
$obj->dateFormat = 'Y_m'; //使用 年_月 形式
if (!$obj->upload()) {
return array('status' => 0, 'msg' => $obj->getErrorMsg());
} else {
$info = $obj->getUploadFileInfo();
$pic = explode('/', $info[0]['savename']);
return array(
'status' => 1,
'path' => array(
'max' => $pic[0] . '/max_' . $pic[1],
'medium' => $pic[0] . '/medium_' . $pic[1],
'mini' => $pic[0] . '/mini_' . $pic[1]
)
);
}
}
```
### 7、配置文件
```
<?php
return array(
//图片上传
'UPLOAD_MAX_SIZE' => 2000000, //最大上传大小
'UPLOAD_PATH' => './Uploads/', //文件上传保存路径
'UPLOAD_EXTS' => array('jpg', 'jpeg', 'gif', 'png'), //允许上传文件的后缀
);
?>
```
### 8、修改用户头像(后台处理)
```
/**
* 修改用户头像
*/
Public function editFace () {
if (!$this->isPost()) {
halt('页面不存在');
}
$db = M('userinfo');
$where = array('uid' => session('uid'));
$field = array('face50', 'face80', 'face180');
$old = $db->where($where)->field($field)->find();
if ($db->where($where)->save($_POST)) {
if (!empty($old['face180'])) {
@unlink('./Uploads/Face/' . $old['face180']);
@unlink('./Uploads/Face/' . $old['face80']);
@unlink('./Uploads/Face/' . $old['face50']);
}
$this->success('修改成功', U('index'));
} else {
$this->error('修改失败,请重试...');
}
}
```
## 下载地址
优秀的jQuery无刷新上传插件Uploadify
http://www.jq22.com/jquery-info103
ThinkPHP整合Uploadify插件实现异步上传图片
https://m.aliyun.com/yunqi/ziliao/23990?spm=5176.11156470.0.0.1b5b28c8kKSDzh
- Layer无刷新不跳转弹框提示信息
- 整合ThinkPHP+实用代码
- TP整合Layer插件实现无刷新
- 自定义助手函数
- 添加信息失败后不跳转
- 三种无限级分类
- TP常用代码
- 自定义公共函数
- TP模型管理专题
- TP模型管理之添加模型
- sfox_newmodel.sql
- TP模型管理之删除模型
- TP模型管理之编辑模型
- TP模型管理之字段添加
- sfox_newmodel.sql_edit
- layer_hplus.js_edit
- TP模型管理之字段删除
- TP模型管理之字段编辑
- TP模型管理之预览模型
- TP模型管理之公共函数
- layer_hplus.js_修订一
- TP模型管理之预览模型静态页
- 后台内容管理系统
- 分类树显示
- 内容列表显示
- 信息发布
- 编辑信息
- layer_hplus.js
- myJs第一版
- myJs第二版
- myJs第三版
- myJs第四版
- TP5插件用法
- Datatables
- WebUploader
- bootstrap-fileinput
- UEditor
- 简单调用
- 路径问题
- 跨域多图上传
- 跨域单图上传
- UEditor图片跨域上传解决方案
- 定制工具栏图标
- ajaxFileUpload
- LayUI
- 图片上传
- layui分页
- 搜索页
- 搜索优化及删除
- Uploadify
- TP5前端应用
- 静态首页
- 前台首页功能实现
- 自定义标签库
- 前台模板继承应用
- 首页自定义标签改进
- 文章内容页
- 自定义标签改进
- 自定义标签修正
- 图片等比例自动缩放
- 后台权限管理
- 角色管理
- 规则管理
- 权限设置
- 会员管理
- 权限管理
- 前台登录注册功能
- 注册登录
- 阿里大于手机注册
- 阿里大于升级阿里云短信服务
- 自动登录完成
- PHP异位或加密实现自动登陆
- 微信开发
- 分享接口
- 静态页面实现微信分享
- 动态页微信分享
- 页面静态化
- 1-全站静态化前期配置
- 2-链接地址静态化
- TP5常用片段代码
- 加载静态资源路径与常量
- thinkphp5预定义常量
- 删除某文件夹的内容
- 解压插件包
- 异步提交插件
- 其他功能
- 背景音乐
- 手机访问PC网站自动跳转到手机网站代码
- 手机微信音乐MP3播放器
- 后盾之网页背景音乐
- 播放器宽度自适应
- 前台首页数据调用
- 视频列表
- 搜索分页
- H5解决苹果(IOS)不能自动播放音乐
- 清空缓存
- 文件处理常识
- 删除路径下的所有文件夹和文件
- 一键清空缓存
- 评论留言
- 格式化时间
- 替换微博内容的URL地址@用户与表情
- PHP正则理解
- jQuery评论插件
- TP空操作
- TP路由
- 跨域访问
- 设置请其头允许跨域请求
- 模板前台判断手机访问跳转手机网址代码
- PHP遍历一个文件夹下所有文件和子文件夹
- PHP获取视频的第一帧与时长
- TP5数据库
- 链式操作原理
- update替换字段部分内容
- 后台开发
- 后台登录页居中显示
- TP5自带验证码
- JS & JQuery专题
- 二级城市联动菜单
- 模板引擎
- 混合模板编译
- 黄永成TP微博开发
- 消息推送
- memcache安装
- 插件开发
- 插件介绍
- 插件钩子
- 浅谈初步理解钩子
- 插件钩子(hooks)分析
- 插件钩子简单理解
- 控制器调用插件
- 钩子通用处理函数
- 插件基类代码
- 插件测试代码
- 浅谈钩子与插件
- 技术综合
- 常用代码
- PHP
- 56个PHP开发常用代码片段(上)
- 56个PHP 开发常用代码片段(中)
- 56个PHP 开发常用代码片段(下)
- sublime text安装自动补全注释的插件
- 影音视频开发
- 视频
- H5视频直播扫盲
- 音乐
- 语音
- PHP实现语音播报功能
- MUI
- 窗体操作