thinkCMF图片上传选择已上传图片
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图片上传选择已上传图片的更多相关文章
- 图片上传和显示——上传图片——上传文件)==ZJ
http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传 http://www.cnblogs.com/mq ...
- Asp.net中FileUpload控件实现图片上传并带预览显示
单一图片上传——“选择”+“上传”,.NET默认模式: 1.实现原理: 采用FileUpload控件默认的使用方式,先由“选择”按钮选择图片,然后单击“上传”按钮完成上传,并可在“上传”按钮的 ...
- 微信JS-SDK接口 + FLASK实现图片上传
最近在做一个项目从全球各地采集图片,考虑采用微信JS-SDK来简化开发.图片会首先上传到微信的服务器,返回一个id,然后根据这个id去微信服务器获取图片.微信提供可选择的压缩图片功能.图片首先上传到微 ...
- base64格式的图片上传阿里云
base64格式的图片上传阿里云 上传图片的时候,除了普通的图片上传,还有一张图片信息是以base64格式发送到后台的. 后台接受base64格式的图片,上传至阿里云代码:(主要是将base64转化成 ...
- .NET WebAPI 实现图片上传(包括附带参数上传图片)
博主的项目,客户端是APP,考虑到以后也可能会应用到微信端.网站等,图片上传方法就需要兼容多端,并且以目前的设计,不允许非登录用户上传图片,就得在上传时解决附带参数上传图片的问题. 先来看看后台方法( ...
- kindeditor修改图片上传路径-使用webapi上传图片到图片服务器
kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 在这里我着重介绍一些使用kindeditor修改图片上传路径并通过webapi上传图片到图片服务器的方案. 因为我使用的 ...
- kindeditor扩展粘贴图片功能&修改图片上传路径并通过webapi上传图片到图片服务器
前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...
- kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器
前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...
- HTML5 Plus 拍照或者相册选择图片上传
HBuilder+HTML5 Plus+MUI实现拍照或者相册选择图片上传,利用HTML5 Plus的Camera.Gallery.IO.Storage和Uploader来实现手机APP拍照或者从相册 ...
随机推荐
- 解决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 ...
- [JZOJ]1293.气象牛[区间DP]
Description 为了研究农场的气候,Betsy帮助农夫John做了N(1 <= N <= 100)次气压测量并按顺序记录了结果M_1-M_N(1 <= M_i <= 1 ...
- 062-PHP函数按值传参,交换数值函数
<?php function swap($x,$y){ //定义交换数值函数 $temp=$x; $x=$y; $y=$temp; } $m=5; $n=15; echo "交换前:& ...
- Android Studio模拟器无法访问网络
Android Studio3.5 模拟器无法访问网络的原因?
- mysql多表关联更新
update 表A inner join 表B on 表A.关联字段 = 表B.关联字段 set 表a.待更新字段01 = 表B.字段01 , 表a.待更新字段021 = 表B.字段02 where ...
- tornado和vue的模板冲突解决方法
tornado和vue的模板冲突解决方法 Vue的插值表达式和tornado的模板都为一对花括号,可以通过修改vue的插值表达式的符号来解决这个问题,具体方法如下: var vm = new Vue( ...
- P 1023 组个最小数
转跳点:
- Oracle:文字与字符串不匹配
执行方法的时候,方法在本地跑是正常,到测试环境报错,错误代码为 ADD_MONTHS(to_date(nvl(T2.EXEC_TIME,t1.DISTRIBUTE_TIME+1),'yyyy-mm-d ...
- javascript设计模式(1)——面向对象基础
用对象收编变量2种方式 1 函数式 var Object = { name:function(){ return this; }, email:function(){ return this; } } ...
- JAVAEE 和项目开发(第四课:HTTP的响应格式和响应状态码)
HTTP 协议之响应 响应格式的结构: 响应行(状态行):HTTP 版本.状态码.状态消息 响应头:消息报头,客户端使用的附加信息 空行:响应头和响应实体之间的,必须的. 响应实体:正文,服务器返回给 ...