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

最新文章

  1. 通过Chrome浏览器检测和优化页面
  2. 规则引擎集成接口(九)Java类对象
  3. 禁止用户选定文本: user-select
  4. [转载]高效使用matlab之四:一个加速matlab程序的例子
  5. IOS 7 Study - Displaying an Image on a Navigation Bar
  6. PAT 1014. Waiting in Line
  7. jquery easy ui 学习 (3) window 限制在父类窗体内
  8. ComboTree( 树型下拉框) 组件
  9. 关于获得本机Mac Address的方法
  10. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇
  11. 最短路径Shortest Path algorithm
  12. python_cookie
  13. JavaSE(十)之Collection总结
  14. 配置SESSION超时与请求超时
  15. React-组件的生命周期详解(含React16版本)
  16. flask处理cookie
  17. node.js中Buffer缓冲器的使用
  18. java-信息安全(九)-基于DH,非对称加密,对称加密等理解HTTPS
  19. Linux使用ntpdate和ntpd进行时间同步
  20. shell 查询oracle数据库

热门文章

  1. 通过修改注册表来破解sqlyog
  2. Postgresql 存储过程调试 1
  3. java笔试题(3)
  4. 11.9Daily Scrum
  5. 角色控制器(CharacterController)
  6. IT服务系统组成
  7. 3、颜色的字符串、十进制、十六进制相互转换(color convert between dec、hex and string )
  8. python-面向对象(股票对象举例)
  9. UIlabel 显示模糊
  10. javascript设计模式--单例模式(Singleton)