1.找到上传图片的模板页面 webuploader.html

在上传文件标签后面 添加

  1. <li class=""><a href="#explorer" data-toggle="tab" class="history">文件管理</a></li>

下边便签对应的展示容器中加上

  1. <div class="tab-pane" id="explorer">
  2. <input type="hidden" id="history_path" value="">
  3. <input type="hidden" id="history_view" value="">
  4. <div class="files-wrapper" style="height:270px; overflow-y:scroll;">
  5. <ul id="files-container-history">
  6. <div class="k" style="width:100%;height:10px;clear:both;"></div>
  7. </ul>
  8. </div>
  9. </div>

图片选择样式稍微美化一下

  1. #files-container-history{
  2. list-style:none;
  3. height:270px;
  4. overflow:scorll;
  5. }
  6. .uploaded{
  7. float:left;
  8. width:200px;
  9. height:100px;
  10. padding:5px;
  11. margin-top:10px;
  12. margin-left:10px;
  13. border:1px solid #ccc;
  14. overflow:hidden;
  15. }
  16. .selected{
  17. border:1px solid #00a1ff;
  18. }
  19. .uploaded img{width:100%;}
  20. .filename{
  21. position:relative; width:100%; height:20px;
  22. margin-top:-20px; color:#fff; background-color:rgba(1,1,1,0.5);
  23. font-size:14px;}

添加异步取回已上传文件列表功能

  1. //拉取图片
  2. var listEnd = false, isLoadingData = false, listIndex = 0, listSize = 10;
  3. $('.history').on('click',function(){
  4. if($('#explorer ul li').length == 0){
  5. get_list();
  6. }
  7. });
  8. function get_list(){
  9. if(!listEnd && !isLoadingData) {
  10. isLoadingData = true;
  11. var url = "/user/admin_asset/listimage";
  12. $.ajax({
  13. type: "GET",
  14. url: url,
  15. dataType: "json",
  16. timeout : 10000,
  17. data: {
  18. page: Math.ceil(listIndex/listSize),
  19. },
  20. success: function (json) {
  21. try {
  22. if (json.state == 'SUCCESS') {
  23. show_img(json.list);
  24. listIndex += parseInt(json.list.length);
  25. if(listIndex >= json.total) {
  26. listEnd = true;
  27. }
  28. isLoadingData = false;
  29. }
  30. } catch (e) {
  31. if(json.indexOf('ue_separate_ue') != -1) {
  32. var list = json.split(r.responseText);
  33. listIndex = parseInt(list.length);
  34. listEnd = true;
  35. isLoadingData = false;
  36. }
  37. }
  38. },
  39. error: function () {
  40. isLoadingData = false;
  41. }
  42. });
  43. }
  44. }
  45. //显示图片
  46. function show_img(list){
  47. var str = '';
  48. for (i = 0; i < list.length; i++) {
  49. if(list[i] && list[i].file_path) {
  50. str = str + '<li class="uploaded" data-path="' + list[i].file_path + '" data-view="/upload/' + list[i].file_path + '">'
  51. + '<div><img src="/upload/' + list[i].file_path + '">'
  52. + '<div class="filename">' + list[i].filename + '</div></div></li>';
  53.  
  54. }
  55. }
  56. $('#explorer ul .k').before(str);
  57. }
  58. //滚动
  59. $('.files-wrapper').on('scroll', function(e){
  60. var scrollTop = $(this).scrollTop() + $(this).outerHeight(true);
  61. var ktop = $(this).find('.k').offset().top;
  62. if(scrollTop >= ktop){
  63. get_list();
  64. }
  65. });
  66.  
  67. //选择
  68. $('#files-container-history').on('click','li',function(){
  69. $(this).addClass('selected').siblings().removeClass('selected');
  70. $('#history_path').val($(this).data('path'));
  71. $('#history_view').val($(this).data('view'));
  72. });

滚动加载更多,展示都有了,

修改文件选择后的回调处理

  1. function get_selected_files() {
  2.  
  3. var tab = $(".tab-content > div.active").attr('id');
  4.  
  5. var files = [];
  6.  
  7. var idPre = 'id' + new Date().getTime();
  8.  
  9. if (tab == 'wrapper') {
  10. var number = jQuery(".filelist li").size();
  11. for (var i = 0; i < number; i++) {
  12.  
  13. var file = new Object();
  14. var $file = jQuery(".filelist li").eq(i);
  15. file.id = idPre + i;
  16. file.filepath = $file.data("filepath");
  17. file.preview_url = $file.data("preview_url");//httpUrl+file.filepath;
  18. file.url = $file.data("url");
  19. file.name = $file.data("name");
  20. if (file.url == undefined) {
  21. continue;
  22. } else {
  23. files.push(file);
  24. }
  25.  
  26. }
  27. }else if(tab == 'explorer'){
  28. if($('#history_path').val() == ''){
  29. alert('请选择图片!');
  30. return false;
  31. }
  32. var file = new Object();
  33. file.id = "historyfile"+new Date().getTime();
  34. file.filepath = $('#history_path').val();
  35. file.preview_url = $('#history_view').val();
  36. file.url = $('#history_path').val();
  37. file.name = "";
  38. files.push(file);
  39. }else{
  40. var file = new Object();
  41. file.id = idPre + '1';
  42. file.filepath = jQuery("#info").val();
  43. file.preview_url = file.filepath;
  44. file.url = file.filepath;
  45. file.name = "";//jQuery(".filelist li .title").eq(i).html();
  46. files.push(file);
  47. }
  48. return files;
  49. }

2.后端添加获取listimage的功能

取个巧在user/controller下的资源管理中添加列出已上传图片

  1. public function listimage()
  2. {
  3. $page = $this->request->param('page');
  4. $join = [
  5. ['__USER__ u', 'a.user_id = u.id']
  6. ];
  7. $total = Db::name('asset')->field('a.id,a.file_path,a.filename,a.create_time')
  8. ->alias('a')->join($join)
  9. ->count();
  10. $result = Db::name('asset')->field('a.id,a.file_path,a.filename,a.create_time')
  11. ->alias('a')->join($join)
  12. ->order('create_time', 'DESC')
  13. ->paginate(10);
  14. $result = array(
  15. "state" => "SUCCESS",
  16. "list" => $result->items(),
  17. "total" => $total
  18. );
  19. die(json_encode($result));
  20. }

thinkCMF图片上传选择已上传图片的更多相关文章

  1. 图片上传和显示——上传图片——上传文件)==ZJ

    http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传 http://www.cnblogs.com/mq ...

  2. Asp.net中FileUpload控件实现图片上传并带预览显示

    单一图片上传——“选择”+“上传”,.NET默认模式: 1.实现原理:     采用FileUpload控件默认的使用方式,先由“选择”按钮选择图片,然后单击“上传”按钮完成上传,并可在“上传”按钮的 ...

  3. 微信JS-SDK接口 + FLASK实现图片上传

    最近在做一个项目从全球各地采集图片,考虑采用微信JS-SDK来简化开发.图片会首先上传到微信的服务器,返回一个id,然后根据这个id去微信服务器获取图片.微信提供可选择的压缩图片功能.图片首先上传到微 ...

  4. base64格式的图片上传阿里云

    base64格式的图片上传阿里云 上传图片的时候,除了普通的图片上传,还有一张图片信息是以base64格式发送到后台的. 后台接受base64格式的图片,上传至阿里云代码:(主要是将base64转化成 ...

  5. .NET WebAPI 实现图片上传(包括附带参数上传图片)

    博主的项目,客户端是APP,考虑到以后也可能会应用到微信端.网站等,图片上传方法就需要兼容多端,并且以目前的设计,不允许非登录用户上传图片,就得在上传时解决附带参数上传图片的问题. 先来看看后台方法( ...

  6. kindeditor修改图片上传路径-使用webapi上传图片到图片服务器

    kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 在这里我着重介绍一些使用kindeditor修改图片上传路径并通过webapi上传图片到图片服务器的方案. 因为我使用的 ...

  7. kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器

    前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...

  8. kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器

    前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...

  9. HTML5 Plus 拍照或者相册选择图片上传

    HBuilder+HTML5 Plus+MUI实现拍照或者相册选择图片上传,利用HTML5 Plus的Camera.Gallery.IO.Storage和Uploader来实现手机APP拍照或者从相册 ...

随机推荐

  1. 解决Exception: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z

    在项目中添加src中添加NativeIO类 /** * Licensed to the Apache Software Foundation (ASF) under one * or more con ...

  2. [JZOJ]1293.气象牛[区间DP]

    Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...

  3. 062-PHP函数按值传参,交换数值函数

    <?php function swap($x,$y){ //定义交换数值函数 $temp=$x; $x=$y; $y=$temp; } $m=5; $n=15; echo "交换前:& ...

  4. Android Studio模拟器无法访问网络

    Android Studio3.5 模拟器无法访问网络的原因?

  5. mysql多表关联更新

    update 表A inner join 表B on 表A.关联字段 = 表B.关联字段 set 表a.待更新字段01 = 表B.字段01 , 表a.待更新字段021 = 表B.字段02 where ...

  6. tornado和vue的模板冲突解决方法

    tornado和vue的模板冲突解决方法 Vue的插值表达式和tornado的模板都为一对花括号,可以通过修改vue的插值表达式的符号来解决这个问题,具体方法如下: var vm = new Vue( ...

  7. P 1023 组个最小数

    转跳点:

  8. Oracle:文字与字符串不匹配

    执行方法的时候,方法在本地跑是正常,到测试环境报错,错误代码为 ADD_MONTHS(to_date(nvl(T2.EXEC_TIME,t1.DISTRIBUTE_TIME+1),'yyyy-mm-d ...

  9. javascript设计模式(1)——面向对象基础

    用对象收编变量2种方式 1 函数式 var Object = { name:function(){ return this; }, email:function(){ return this; } } ...

  10. JAVAEE 和项目开发(第四课:HTTP的响应格式和响应状态码)

    HTTP 协议之响应 响应格式的结构: 响应行(状态行):HTTP 版本.状态码.状态消息 响应头:消息报头,客户端使用的附加信息 空行:响应头和响应实体之间的,必须的. 响应实体:正文,服务器返回给 ...