1. 模板处理, 可以参考 checkbox 的。
  2. 注:edit 方法的 基本一样,需要先把已有的数据展示出来,绑定双击事件,删除图片 需要先绑定给已经展示出来的图片, uploadPicture callback 中只绑定给了新上传的图片
  3. Application\Admin\Common/function.php
  4.  
  5. function get_attribute_type
  6.  
  7. $_type 添加一个元素
  8. 'pictures' => array('多图上传','TEXT NOT NULL'),
  9.  
  10. 打开 Application/Admin/View/Think/add.html
  11. 找到 switch 标签
  12.  
  13. <case value="picture"> …… </case> 这段复制一份, <case value="picture"> 改为 <case value="pictures">
  14.  
  15. 删除
  16. <case value="pictures"> 里边的
  17. <input type="hidden" name="{$field.name}" id="cover_id_{$field.name}"/>
  18.  
  19. 修改
  20. function uploadPicture{$field.name}(file, data){
  21. var data = $.parseJSON(data);
  22. var src = '';
  23. var id=0; //新加的
  24. if(data.status){
  25. id = data.id;
  26. $("#cover_id_{$field.name}").val(data.id);
  27. src = data.url || '__ROOT__' + data.path;
  28. //向原来的图片展示框中追加图片input 追加图片 ID
  29.  
  30. $("#upload_picture_{$field.name}").parent().find('.upload-img-box').append(
  31. '<div class="upload-pre-item" id="cover_picture_{$field.name}'+id+'"><img src="' + src + '" />'+
  32. '<input type="hidden" name="{$field.name}[]" value="'+id+'" id="cover_id_{$field.name}'+id+'"/></div>'
  33. );
  34. // 绑定双击事件,删除图片,你也可以点击图片预览大图, 并写上删除图片方法,//你可以用ajax 从数据库中删除图片,
  35. $("#cover_picture_{$field.name}"+id).on('dblclick',function(s){
  36. $(this).remove();
  37. $('#cover_id_{$field.name}'+id).remove();
  38.  
  39. })
  40. } else {
  41. updateAlert(data.info);
  42. setTimeout(function(){
  43. $('#top-alert').find('button').click();
  44. $(that).removeClass('disabled').prop('disabled',false);
  45. },1500);
  46. }
  47. }
  48.  
  49. 数据处理, 可以参考 checkbox 的。
  50. 方法一;
  51. Application\Admin\Controller/ThinkController.class.php
  52.  
  53. protected function checkAttr 添加如下 (把提交过来的array 转为 string 以便存入数据库)
  54.  
  55. }elseif('pictures'==$attr['type']){ // 多选型
  56. $auto[] = array($attr['name'],'arr2str',3,'function'); //arr2str 、 serialize 、json_encode 都可以
  57.  
  58. 或者在
  59. 模型管理-》字段管理-》 把对应的字段 的自动完成规则 设置 arr2str serialize json_encode 都可以
  60.  
  61. 编辑
  62. <case value="pictures">
  63. <div class="controls">
  64. <input type="file" id="upload_picture_{$field.name}">
  65.  
  66. <div class="upload-img-box">
  67. <notempty name="data[$field['name']]">
  68.  
  69. <volist name=":parse_field_attr($data[$field['name']])" id="vo">
  70. <div class="upload-pre-item upload-pre-item{$field.name}" id="cover_picture_{$vo}"><img src="{$data[$field['name']]|get_cover='path'}"/>
  71. <input type="hidden" name="{$field.name}[]" id="cover_id_{$vo}" value="{$vo}"/>
  72. </div>
  73.  
  74. </volist>
  75. </notempty>
  76. </div>
  77. </div>
  78. <script type="text/javascript">
  79. //上传图片
  80. /* 初始化上传插件 */
  81. $("#upload_picture_{$field.name}").uploadify({
  82. "height" : 30,
  83. "swf" : "__STATIC__/uploadify/uploadify.swf",
  84. "fileObjName" : "download",
  85. "buttonText" : "上传图片",
  86. "uploader" : "{:U('File/uploadPicture',array('session_id'=>session_id()))}",
  87. "width" : 120,
  88. 'removeTimeout' : 1,
  89. 'fileTypeExts' : '*.jpg; *.png; *.gif;',
  90. "onUploadSuccess" : uploadPicture{$field.name},
  91. 'onFallback' : function() {
  92. alert('未检测到兼容版本的Flash.');
  93. }
  94. });
  95. function uploadPicture{$field.name}(file, data){
  96. var data = $.parseJSON(data);
  97. var src = '';
  98. var id=0;
  99. if(data.status){
  100. id = data.id;
  101. $("#cover_id_{$field.name}").val(data.id);
  102. src = data.url || '__ROOT__' + data.path;
  103. $("#upload_picture_{$field.name}").parent().find('.upload-img-box').append(
  104. '<div class="upload-pre-item" id="cover_picture_{$field.name}'+id+'"><img src="' + src + '" />'+
  105. '<input type="hidden" name="{$field.name}[]" value="'+id+'" id="cover_id_{$field.name}'+id+'"/></div>'
  106. );
  107.  
  108. $("#cover_picture_{$field.name}"+id).on('dblclick',function(s){
  109. $(this).remove();
  110. })
  111. } else {
  112. updateAlert(data.info);
  113. setTimeout(function(){
  114. $('#top-alert').find('button').click();
  115. $(that).removeClass('disabled').prop('disabled',false);
  116. },1500);
  117. }
  118. }
  119. $(".upload-pre-item{$field.name}").on('dblclick',function(s){
  120. $(this).remove();
  121. })
  122. </script>
  123. </case>

onethink多图上传的更多相关文章

  1. yii2组件之多图上传插件FileInput的详细使用

    作者:白狼 出处:http://www.manks.top/yii2_multiply_images.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...

  2. iOS 使用AFN 进行单图和多图上传

    图片上传时必要将图片进行压缩,不然会上传失败 1.单张图上传 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManag ...

  3. PHP之:多图上传

    撰写日期:2016-6-30 15:17:35 Thursday 参考 http://a3147972.blog.51cto.com/2366547/1381136 (08-05ThinkPHP+sw ...

  4. 微信jssdk,实现多图上传的一点心得

    一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置function signatureJSSDK() { var url = window.loca ...

  5. JS案例之4——Ajax多图上传

    近期项目中有好几次用到多图上传,第一次在项目中真正用到Ajax技术,稍微整理了下,贴个案例出来. 我们传统的做法是当用户提交一个表单时,就向web服务器端发送一个请求.服务器接受并处理传来的表单信息, ...

  6. 微信企业号办公系统-JSSDK上传图片(多图上传)

    在开发微信企业号办公系统中,涉及到了图片上传功能,一开始使用的flash插件上传方法,在苹果手机上可以调用相机直接拍摄照片,但在安卓手机上只能选择照片. 微信jssdk-api带有一套完整的调用选择本 ...

  7. thinkphp3.2.x多图上传并且生成多张缩略图

    html部分 <!DOCTYPE html><html><head><meta http-equiv="Content-Type" con ...

  8. thinkphp5多图上传 js部分

    在项目中常会用到多图上上传,那就需要多图上传后需要预览,并且能删掉传错(不想传)的图,然而 测试了半天 并不知道jq怎么写,parent()parents()用了半天无果,罢了,还是用原生js来写.这 ...

  9. springBoot+ vue+ Element-ui实现合并多图上传(一次请求多张图片)

    这次上传使用的是Elemet-ui的uoload上传组件,组件预留的钩子回调还是比较充足的. 1:  实现多图上传主要用到以下两个属性: 下面讲一下属性使用: <el-upload :actio ...

随机推荐

  1. Java基础- TreeMap<Person,Integer> 实现的定制排序(Comparator 接口)

    测试内容: TreeMap<Person,Integer> 的两级排序 1.先按Person.id 从小到大 (需要把int类型转换成包装类 Integer, 才可以使用p1.getId( ...

  2. spring实例化二:SimpleInstantiationStrategy

            spring对类的实例化,定义了接口InstantiationStrategy,同时先做了个简单实现类SimpleInstantiationStrategy.采用实现部分,抽象部分的策 ...

  3. 教程|Anaconda在Windows上安装及使用

    Anaconda是一个python环境管理软件.可以建立环境,并向环境装安装自己需要的包. 其优势是可以不用自己一个一个安装包,极大地减少了因为配置环境而产生的时间成本:同时多个环境相互独立,为不同项 ...

  4. Nginx中ngx_stream_core_module和ngx_stream_proxy_module

    ngx_stream_core_module模块该模块模拟基于tcp或udp的服务连接的反向代理理,即⼯工作于传输层的调度器器指令:17.1 streamSyntax: stream { ... }D ...

  5. JavaScript 基础知识 - BOM篇

    前言 本篇文章是JavaScript基础知识的BOM篇,如果前面的<JavaScript基础知识-DOM篇>看完了,现在就可以学习BOM了. 注意: 所有的案例都在这里链接: 提取密码密码 ...

  6. jaxb生成pojo类返回类型为布尔值的问题

    返回值为Boolean的话回在对象转json的时候丢失掉这个属性,因为json认的是小写. 这个算jaxb的一个bug:https://java.net/jira/browse/JAXB-510 解决 ...

  7. BZOJ 3052/Luogu P4074 [wc2013]糖果公园 (树上带修莫队)

    题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h&g ...

  8. 顺序表Vector

    程序中会使用数据结构:例如:顺序表.链表.二叉树: 数据结构在底层中本质上只有两种:数据之间挨着和不挨着:   1.关于Vector

  9. 001_linux驱动之_驱动的加载和卸载

    (一)驱动的安装: 1. 可以将驱动程序静态编译进内内核中 2. 也可以将它作为模块在使用的时候再加载 注:在配置内核时候,如果某个配置被设置为m,就表示它将会被编译成模块   (二)加载和卸载驱动使 ...

  10. Mac工具库

    1.文件传输工具 CyberDuck 2.解压缩工具 The Unarchiver 3. 录屏工具 LICEcap 4. 命令框工具 Go2Shell / iTerm 5. 提醒事项 OmniFocu ...