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实现多图片批量上传功能的更多相关文章

  1. 利用WebUploader进行图片批量上传,在页面显示后选择多张图片压缩至指定路径【java】

    WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览 ...

  2. PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件

    PHP  多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...

  3. KindEditor图片批量上传

    KindEditor编辑器图片批量上传采用了上传插件swfupload.swf,所以后台上传文件方法返回格式应为JSONObject的String格式(注). JSONObject格式: JSONOb ...

  4. asp.net+swfupload 多图片批量上传(附源码下载)

    asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...

  5. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  6. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙

    前言 KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架.它具备模块化.高扩展性.组件齐全,接口一致.自主开发.适合多种应用场景等特性.本人在一次项目中层使用这个uploader组件. ...

  7. JAVA图片批量上传JS-带预览功能

    这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...

  8. webuploader 实现图片批量上传

    1.导入资源 2.JSP代码 <div class="page-container"> <div class="row cl"> < ...

  9. [组件封装]微信小程序-图片批量上传照片墙

    描述 批量上传图片, 可设置最大上传个数, 可删除, 可设置默认值. 效果 源码 pictures-wall.wxml <view class="picturesWall"& ...

随机推荐

  1. 微软职位内部推荐-Sr SDE

    微软近期Open的职位: MSN reaches nearly half a billion people across the globe where we are the #1 portal in ...

  2. 收集的冻结table 标题和左侧(完美)

     <html> <head>     <meta name="viewport" content="width=device-width&q ...

  3. Log4J配置文件说明

    Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息.通过配置,可以创建出Log4J的运行环境 ...

  4. javascript权威指南第六版学习

    第二章 语法结构 2.1 字符集 什么是字符集?各种字符集什么关系?unicode,utf-8是什么关系? 字符(Character)是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等 ...

  5. 关于java.lang.OutOfMemoryError: Java heap space的错误分析

    今天无意间遇到这个错误:java.lang.OutOfMemoryError: Java heap space 问题出现原因:使用a标签实现快速下载[当然已经实现了,但想了想还是要归纳解决这类问题] ...

  6. shell 进程查询相关的命令

    同一个进程部署多个,如何知道删除哪个: ll /proc/ 会显示位置 查看pid下哪些socket链接 ll /proc//fd

  7. UVALive - 6952 Cent Savings dp

    题目链接: http://acm.hust.edu.cn/vjudge/problem/116998 Cent Savings Time Limit: 3000MS 问题描述 To host a re ...

  8. PKUSC滚粗记

    本来想考得这么烂还是别写了,后来想想毕竟是我高中难得的一次经历,靠脑子记的话我这脑残患者将来肯定会忘了啊……QwQ 好像跟我一样用这个题目的神犇都签了一本QwQ Day 0 来的路上我校其他三位OIe ...

  9. Matlab实现单变量线性回归

    一.理论 二.数据集 6.1101,17.592 5.5277,9.1302 8.5186,13.662 7.0032,11.854 5.8598,6.8233 8.3829,11.886 7.476 ...

  10. ios读取通讯录信息

    ios读取通讯录信息 (2012-05-22 14:07:11) 标签: ios读取通讯录 it   iphone如许app读取通讯录信息,读取通讯录信息时需要加载AddressBookUI 和Add ...