OneThink实现多图片批量上传功能
OneThink原生系统中的图片上传功能是uploadify.swf插件进行上传的,默认是只能上传一张图片的,但是uploadify.swf是支持多图片批量上传的,那么我们稍加改动就可实现OneThink实现多图片批量上传功能。
首先我们修改模型管理中的字段类型选项,在里面添加一项“批量上传图片”,如下图所示。

添加方法:打开Application/Admin/Common/function.php文件,找到function get_attribute_type($type=”),在第86行下添加一项’uploadpics’ => array(‘批量上传图片’,’varchar(255) NOT NULL’)
/*********************
*copyright www.devdo.net*
*获取属性类型信息********
*********************/
function get_attribute_type($type=''){
// TODO 可以加入系统配置
static $_type = array(
'num' => array('数字','int(10) UNSIGNED NOT NULL'),
'string' => array('字符串','varchar(255) NOT NULL'),
'textarea' => array('文本框','text NOT NULL'),
'datetime' => array('时间','int(10) NOT NULL'),
'bool' => array('布尔','tinyint(2) NOT NULL'),
'select' => array('枚举','char(50) NOT NULL'),
'radio' => array('单选','char(10) NOT NULL'),
'checkbox' => array('多选','varchar(100) NOT NULL'),
'editor' => array('编辑器','text NOT NULL'),
'picture' => array('上传图片','int(10) UNSIGNED NOT NULL'),
'uploadpics' => array('批量上传图片','varchar(255) NOT NULL'), //批量上传图片项
'file' => array('上传附件','int(10) UNSIGNED NOT NULL'),
);
return $type?$_type[$type][]:$_type;
}
添加这一项后,你在后台添加字段的时候就可以进行选择了,不过要实现功能你还需要修改一些东西。
修改你的模板(如添加文章、修改文章模板),比如Application/Admin/View/Think/edit.html。在<case value=”picture”>…</case>下添加如下代码。
这里是为了实现具体图片上传功能。
<case value="uploadpics">
<!-- 批量上传 -->
<input type="file" id="upload_all">
<input type="hidden" name="{$field.name}" value="{$data[$field['name']]}" class="input_upload_all"/>
<div class="uploadpics_piclist">
<ul class="highslide-gallery">
<notempty name="data[$field['name']]">
<?php
$pics=explode(',', $data[$field['name']]);
foreach($pics as $v){
if($v!=''){
?>
<li><a href="__ROOT__{$v|get_cover='path'}" target="_blank"><img src="__ROOT__{$v|get_cover='path'}"/></a><span onclick="delthispic(this)" dataid="{$v},"></span></li>
<?php
}
}
?>
</notempty>
</ul>
</div>
<script type="text/javascript">
//上传图片
/* 初始化上传插件 */
$("#upload_all").uploadify({
"height" : ,
"swf" : "__STATIC__/uploadify/uploadify.swf",
"fileObjName" : "download",
"buttonText" : "批量上传图片",
"uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}",
"width" : ,
'removeTimeout' : ,
'fileTypeExts' : '*.jpg; *.png; *.gif;',
"onUploadSuccess" : uploadAll,
'onFallback' : function() {
alert('未检测到兼容版本的Flash.');
}
});
function uploadAll(file, data){
var data = $.parseJSON(data); var src = '';
if(data.status){
src = data.url || '__ROOT__' + data.path;
var value = '<li><a href="'+src+'" class="highslide" onClick="return hs.expand(this)"><img src="' + src + '"/></a><span onclick="delthispic(this)" dataid="'+data.id+',"></span></li>';
$('.input_upload_all').val($('.input_upload_all').val()+data.id+','); $('.uploadpics_piclist ul').append(value); } else {
updateAlert(data.info);
setTimeout(function(){
$('#top-alert').find('button').click();
$(that).removeClass('disabled').prop('disabled',false);
},);
}
}
function delthispic(obj){
var dataid=$(obj).attr('dataid');
$('.input_upload_all').val($('.input_upload_all').val().replace(dataid, ""));
$(obj).parent().remove();
}
</script>
</case>
最终原理,定义一个字段,存取的是图片的ID序列,图片上传成功后保存ID,再通过ID获取图片地址。
明白原理后要实现其它地方上传(如前台上传),上传其它类型文件以及定义上传路径等就都可以扩展改编来实现。
如有不明白地方,请查看详情http://www.devdo.net/onethink-tupianpiliangshangchuan.html
OneThink实现多图片批量上传功能的更多相关文章
- 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...
- PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件
PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...
- KindEditor图片批量上传
KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONOb ...
- asp.net+swfupload 多图片批量上传(附源码下载)
asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...
- Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙
前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...
- JAVA图片批量上传JS-带预览功能
这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...
- webuploader 实现图片批量上传
1.导入资源 2.JSP代码 <div class="page-container"> <div class="row cl"> < ...
- [组件封装]微信小程序-图片批量上传照片墙
描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...
随机推荐
- 微信小程序购物商城系统开发系列
微信小程序购物商城系统开发系列 微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统. ...
- Spring事务总结
事务是什么? 事务就是用来解决类似问题,事务是一系列的动作,它们综合在一起才是一个完整的工作单元,这些动作必须全部完成,如果有一个失败,那么事务就会回滚到最开始的状态,仿佛什么都没有发生过.在企业级应 ...
- 嵌入字体@font-face
嵌入字体@font-face @font-face能够加载服务器端的字体文件,让浏览器端可以显示用户电脑里没有安装的字体. 语法: @font-face { font-family : 字体名称; s ...
- 利用Java实现表达式二叉树
(*^-^*) 什么是二叉树,这里不再介绍,可以自行百度:二叉树.在这里利用java实现“表达式二叉树”. 表达式二叉树的定义 第一步先要搞懂表达式二叉树是个什么东东?举个栗子,表达式:(a+b×(c ...
- makefile常用函数
标签(空格分隔): makefile 1.字符串替换和分析函数 $(subst from,to,text) #在文本"text"中使用"to"替换每一处&quo ...
- 关于Viual Studio 改变编辑器背景背景及背景图片(转)
Visual Studio背景颜色或者背景图片是可以修改的,根据个人的爱好进行相应的修改 首先先展示下效果: 修改方法如下: 1.在工具-扩展和更新-联机,此时他会自动搜索,暂时让他自己搜索去吧,这里 ...
- 图片上传前的预览(PHP)
1.先创建一个file表单域,我们需要用它来浏览本地文件.<form name="form1" id="form1" method="post& ...
- HDU 1028Ignatius and the Princess III(母函数简单题)
Ignatius and the Princess III Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d ...
- PHP命令行模式基本介绍
首先要保证php在cli模式下可用,php –v会返回PHP的版本号. [gaojian3@log001 ~]$ php -v PHP (cli) (built: Aug ::) Copyrigh ...
- 一个奇怪的网络故障 默认网关为0.0.0.0(Windows)
用IPCONFIG命令看到的情况是这样: Windows IP 配置 以太网适配器 本地连接 : 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . ...