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

在上传文件标签后面 添加

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

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

<div class="tab-pane" id="explorer">
<input type="hidden" id="history_path" value="">
<input type="hidden" id="history_view" value="">
<div class="files-wrapper" style="height:270px; overflow-y:scroll;">
<ul id="files-container-history">
<div class="k" style="width:100%;height:10px;clear:both;"></div>
</ul>
</div>
</div>

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

#files-container-history{
list-style:none;
height:270px;
overflow:scorll;
}
.uploaded{
float:left;
width:200px;
height:100px;
padding:5px;
margin-top:10px;
margin-left:10px;
border:1px solid #ccc;
overflow:hidden;
}
.selected{
border:1px solid #00a1ff;
}
.uploaded img{width:100%;}
.filename{
position:relative; width:100%; height:20px;
margin-top:-20px; color:#fff; background-color:rgba(1,1,1,0.5);
font-size:14px;}

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

//拉取图片
var listEnd = false, isLoadingData = false, listIndex = 0, listSize = 10;
$('.history').on('click',function(){
if($('#explorer ul li').length == 0){
get_list();
}
});
function get_list(){
if(!listEnd && !isLoadingData) {
isLoadingData = true;
var url = "/user/admin_asset/listimage";
$.ajax({
type: "GET",
url: url,
dataType: "json",
timeout : 10000,
data: {
page: Math.ceil(listIndex/listSize),
},
success: function (json) {
try {
if (json.state == 'SUCCESS') {
show_img(json.list);
listIndex += parseInt(json.list.length);
if(listIndex >= json.total) {
listEnd = true;
}
isLoadingData = false;
}
} catch (e) {
if(json.indexOf('ue_separate_ue') != -1) {
var list = json.split(r.responseText);
listIndex = parseInt(list.length);
listEnd = true;
isLoadingData = false;
}
}
},
error: function () {
isLoadingData = false;
}
});
}
}
//显示图片
function show_img(list){
var str = '';
for (i = 0; i < list.length; i++) {
if(list[i] && list[i].file_path) {
str = str + '<li class="uploaded" data-path="' + list[i].file_path + '" data-view="/upload/' + list[i].file_path + '">'
+ '<div><img src="/upload/' + list[i].file_path + '">'
+ '<div class="filename">' + list[i].filename + '</div></div></li>'; }
}
$('#explorer ul .k').before(str);
}
//滚动
$('.files-wrapper').on('scroll', function(e){
var scrollTop = $(this).scrollTop() + $(this).outerHeight(true);
var ktop = $(this).find('.k').offset().top;
if(scrollTop >= ktop){
get_list();
}
}); //选择
$('#files-container-history').on('click','li',function(){
$(this).addClass('selected').siblings().removeClass('selected');
$('#history_path').val($(this).data('path'));
$('#history_view').val($(this).data('view'));
});

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

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

function get_selected_files() {

        var tab = $(".tab-content > div.active").attr('id');

        var files = [];

        var idPre = 'id' + new Date().getTime();

        if (tab == 'wrapper') {
var number = jQuery(".filelist li").size();
for (var i = 0; i < number; i++) { var file = new Object();
var $file = jQuery(".filelist li").eq(i);
file.id = idPre + i;
file.filepath = $file.data("filepath");
file.preview_url = $file.data("preview_url");//httpUrl+file.filepath;
file.url = $file.data("url");
file.name = $file.data("name");
if (file.url == undefined) {
continue;
} else {
files.push(file);
} }
}else if(tab == 'explorer'){
if($('#history_path').val() == ''){
alert('请选择图片!');
return false;
}
var file = new Object();
file.id = "historyfile"+new Date().getTime();
file.filepath = $('#history_path').val();
file.preview_url = $('#history_view').val();
file.url = $('#history_path').val();
file.name = "";
files.push(file);
}else{
var file = new Object();
file.id = idPre + '1';
file.filepath = jQuery("#info").val();
file.preview_url = file.filepath;
file.url = file.filepath;
file.name = "";//jQuery(".filelist li .title").eq(i).html();
files.push(file);
}
return files;
}

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

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

public function listimage()
{
$page = $this->request->param('page');
$join = [
['__USER__ u', 'a.user_id = u.id']
];
$total = Db::name('asset')->field('a.id,a.file_path,a.filename,a.create_time')
->alias('a')->join($join)
->count();
$result = Db::name('asset')->field('a.id,a.file_path,a.filename,a.create_time')
->alias('a')->join($join)
->order('create_time', 'DESC')
->paginate(10);
$result = array(
"state" => "SUCCESS",
"list" => $result->items(),
"total" => $total
);
die(json_encode($result));
}

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. 二十三、JavaScript之html事件

    一.代码如下 二.效果如下 三.点击之后 <!DOCTYPE html> <html> <meta http-equiv="Content-Type" ...

  2. opencv+python+dlib人脸关键点检测、实时检测

    安装的是anaconde3.python3.7.3,3.7环境安装dlib太麻烦, 在anaconde3中新建环境python3.6.8, 在3.6环境下安装dlib-19.6.1-cp36-cp36 ...

  3. Node.js NPM 介绍

    章节 Node.js NPM 介绍 Node.js NPM 作用 Node.js NPM 包(Package) Node.js NPM 管理包 Node.js NPM Package.json NPM ...

  4. category添加属性

    category添加属性 面试题 Category的实现原理,以及Category为什么只能加方法不能加属性. Category中有load方法吗?load方法是什么时候调用的?load 方法能继承吗 ...

  5. DuplicateHandle伪句柄与实句柄的应用二

    //扫描进程列表,获得进程名为 ConsoleApplication2.exe的进程句柄B,把当前进程A的伪 //句柄传递给B,在B进程中关闭它 #include "stdafx.h&quo ...

  6. linux shell的创建与启动

    1.创建shell脚本,输入linux命令: touch my.sh 2.编辑shell脚本,输入linux命令: vi my.sh 3.在shell脚本进行编辑:顺便记一次Jenkins的自动启动的 ...

  7. HTTP协议、时间戳

    1.什么是HTTP协议 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式.协作式和超媒体信息系统的应用层协议.HTTP是万维网的数据通信的 ...

  8. springboot整合mybatis与thymeleaf

    1.创建springboot项目 (1)选择Spring Initializr (2)填写自己的Group 与 Artifact (3)选择依赖框架 等待maven下载好依赖和插件即可 2.主配置文件 ...

  9. SpringBoot 系列教程之事务不生效的几种 case

    SpringBoot 系列教程之事务不生效的几种 case 前面几篇博文介绍了声明式事务@Transactional的使用姿势,只知道正确的使用姿势可能还不够,还得知道什么场景下不生效,避免采坑.本文 ...

  10. GCPC 2013_A Boggle DFS+字典树 CSU 1457

    上周比赛的题目,由于那个B题被神编译器的优化功能给卡了,就没动过这个题,其实就是个字典树嘛.当然,由于要在Boggle矩阵里得到初始序列,我还一度有点虚,不知道是用BFS还是DFS,最后发现DFS要好 ...