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拍照或者从相册 ...
随机推荐
- 这26个为什么,让初学者理解Python更简单!
为什么Python使用缩进来分组语句? 为什么简单的算术运算得到奇怪的结果? 为什么浮点计算不准确? 为什么Python字符串是不可变的? 为什么必须在方法定义和调用中显式使用“self”? 为什么不 ...
- eclipse中svn重新设置账户
查看svn版本:windows > preference > Team > SVN 1.如果svn插件是svnkit版 只需找到.keyring文件,一般目录是:eclipse安装目 ...
- Spring 框架介绍
Spring 框架介绍 Spring 框架模块 Spring开发环境搭建(Eclipse) 创建一个简单的Spring应用 Spring 控制反转容器(Inversion of Control – I ...
- exctern C
在C++中调用C语言 因为C++扩展了函数重载.编译时会将函数名修改,所以直接条用会出错. #ifdef __cplusplusextern "C" {#endif // __cp ...
- CGridCtrl设置行列不可拉伸
m_HFlexGrid.SetColumnResize(FALSE); m_HFlexGrid.SetRowResize(FALSE);
- android:padding和android:margin的区别 android:gravity和 android:layout_gravity 区别
Android的Margin和Padding跟Html的是一样的.如下图所示:橙色边框(一个RelativeLayout或者LinearLayout)为例,最外层灰色为屏幕边框,黄色部分为Paddin ...
- (1) JVM内存管理:内存模型
引子 一段简单的代码结果引发疑问,==到底比较的是什么?equals呢? public static void main(String args[]){ String s1="abc&quo ...
- js 月份选择器(只选择到月)
需要如下js https://pan.baidu.com/s/1c1T9wY0 在html中添加如下代码 <input onclick="setmonth(this)" /& ...
- 关于Wasserstein GAN的一些笔记
这篇笔记基于上一篇<关于GAN的一些笔记>. 1 GAN的缺陷 由于 $P_G$ 和 $P_{data}$ 它们实际上是 high-dim space 中的 low-dim manifol ...
- <style scoped >中使用深度选择器影响子组件
摘自:https://blog.csdn.net/zhouzuoluo/article/details/95593143 <style scoped >中使用深度选择器影响子组件 在< ...