layui 上传图片回显并点击放大实现
1、页面代码布局
<div class="layui-col-xs12 form-group">
<div class="layui-col-xs6">
<div class="layui-col-xs3">
<label>标题</label>
</div>
<div class="layui-col-xs7">
<input type="text" name="title" id="title" required lay-verify="required"
placeholder="请输入图片标题"
autocomplete="off" class="layui-input">
<input type="hidden" name="id">
</div>
</div>
</div>
2、点击放大设置
var renderImg = function () {
form.render();
layer.photos({
photos: '.theImg'
, anim: //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
});
}
3、上传成功之后,回显
//图片上传
upload.render({
elem: '#uploadImg'
, url: "commonCtrl/receiptUpload" //必填项
, method: '' //可选项。HTTP类型,默认post
, accept: 'images'
, acceptMime: 'image/*'
, data: {flag: "rotationChart"} //可选项。额外的参数,如:{id: 123, abc: 'xxx'}
, before: function (obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
//预读本地文件示例,不支持ie8
}
,done: function(res){
//如果上传失败
if(!res.success){
return layer.alert('上传失败');
}
//上传成功
var img = '<img layer-pid="rotationChartDiv" alt="" layer-src="' + res.data.url + '" src="' +
res.data.url + '" style="max-width: 100%;max-height: 100%;">';
$("#rotationChartDiv").html(img);
$("#url").val(res.data.url);
//点击放大
renderImg();
}
,error: function(){
layer.msg("上传失败");
}
});
end:补上上传接口实现代码
controller层
@RequestMapping(value = "/receiptUpload", method = RequestMethod.POST)
@ResponseBody
public YJLResponseModel receiptUpload(@RequestParam("file") MultipartFile img, @RequestParam String flag) {
return UploadUtil.fileUploadServices(img, flag);
}
service层:
public static Map fileUploadServices(MultipartFile file,
String flag) {
Map<String, String> result = new HashMap<>();
String name = file.getOriginalFilename();
String suffixName = "";
/*
* MultipartFile转File
*/
File f = null;
try {
if (!name.contains(".")) {
errorMsg = "文件不能为空!";
throw new Exception(getErrorMsg());
} else {
suffixName = name.substring(name.indexOf("."));
f = File.createTempFile("tmp", null);
//通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。MultipartFile转存后,无法再操作,会报错
file.transferTo(f);
//在JVM进程退出的时候删除文件,通常用在临时文件的删除.
f.deleteOnExit(); /*
* File转byte
*/
byte[] buffer = null;
if (f != null) {
FileInputStream fis = new FileInputStream(f);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[];
int n;
while ((n = fis.read(b)) != -) {
bos.write(b, , n);
}
fis.close();
bos.close();
buffer = bos.toByteArray(); /*
* byte上传到webService
*/
UploadService myServiceImplService = new UploadService();
UploadServiceSoap msis = myServiceImplService.getUploadServiceSoap();
//是否上传成功
Holder<Boolean> hb = new Holder<>();
//上传成功后文件的路径
Holder<String> hs = new Holder<>();
msis.uploadFile(buffer, flag, suffixName, hb, hs);
if (hb.value) {
setSuccess(true);
Map<String, String> map = new HashMap<>();
map.put("url", hs.value);
result.put("data",map);
} else {
errorMsg = "上传失败!";
}
} else {
errorMsg = "文件不能为空!";
throw new Exception(getErrorMsg());
}
} } catch (Exception e) {
e.printStackTrace();
logger.error(e.getMessage());
} finally{
result.put("msg",errorMsg);
}
return result;
}
layui 上传图片回显并点击放大实现的更多相关文章
- WebUploader 上传图片回显
/* fileMaxCount 最大文件数 buttonText 按钮文本 multiple 是否多选 */ (function ($) { $.fn.extend({ uploadImg: func ...
- Kindeditor上传图片回显不出来
原因之一: 图片成功上传但是回显不出来,这个时候,要检查返回的图片地址是否加了http://这个玩意,不然会将原来的头加上图片返回地址.
- 前端上传图片回显并用base64编码,后端做解码储存,存储图片路径在.properties文件中配置(以上传身份证照片为例)
前端页面:<form id="kycForm" enctype="multipart/form-data"> <input type=&quo ...
- js实现上传图片回显功能
用到h5技术 <img id="headimg" src="<%=path%>/resources/images/icon4.png" sty ...
- js上传图片回显
$("#file01").change(function(){ var objUrl = getObjectURL(this.files[0]) ; console.log(&qu ...
- Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项
页面跳转反显(点击项,点击table滚动的位置,搜索条件,分页回显) 点击table tr项后,页面跳转到下级页面,返回回显搜索条件.当前页码.并将点击项select选中.滚动条也被记录回显跳转时滚动 ...
- layui在open弹出层回显,解决动态select数据回显问题
//监听数据表格工具条 table.on('tool(contentList)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 l ...
- layui——上传图片,并实现放大预览
一般上传文件后会返回文件的路径,然后存储到数据库,那么首先实现上传后的放大和删除功能 function uploadSmallPic() { var upload = layui.upload; up ...
- 使用Dropzone上传图片及回显演示样例
一.图片上传所涉及到的问题 1.HTML页面中引入这么一段代码 <div class="row"> <div class="col-md-12" ...
随机推荐
- 王某人从0开始学习lorawan的笔记_0
最近老板想做lorawan的项目,交给我了,我也应承下来了,但是!!!我TM连lorawan是啥子我都不知道啊啊啊啊啊! 真希望我女朋友可以看穿我的倔强,给我1千万,让我专心当舔狗,等等,我的女朋友? ...
- 前端开发-CSS语法标准
一.命名规则说明: 1.命名规则说明: 所有的命名最好都小写 属性的值一定要用双引号("")括起来,且一定要有值如class="nav",id="na ...
- mac入门之设置
mac入门: 一般手机软件,都是分设置和业务功能:操作系统亦是如此,设置+必备应用:用设置入门十分合理. 总览: 通用:通用,顾明思意是设置的设置,设置是独立应用之外或者公共的开关,通用更抽象一层,没 ...
- Oracle大量数据更新策略
生产上要修改某个产品的产品代号, 而我们系统是以产品为中心的, 牵一发而动全身, 涉及表几乎覆盖全部, 有些表数据量是相当大的, 达到千万, 亿级别. 单纯的维护产品代号的 SQL 是不难的, 但是性 ...
- NLP(五) 词性标注和文法
NLTK内置词性标注器 用nltk.pos_tag()函数进行词性标注 import nltk nltk.download('averaged_perceptron_tagger') simpleSe ...
- Codeforces Technocup 2017 - Elimination Round 2 D. Sea Battle(贪心)
题目链接 http://codeforces.com/contest/729/problem/D 题意:给你一个1*n的区域有a艘船,每艘船宽b,已经开了k枪都没打到,问你最少再开几枪至少能打到一艘船 ...
- Marvelous Mazes UVA - 445
#include<iostream> #include<stdio.h> #include<string> #include<cstring> #def ...
- 携程PMO--小罗说敏捷之WIP限制在制品
转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo) WIP是什么? WIP(work in progress)指的就是工作中心在制品区.在经过部分制程之后,还没有 ...
- idea中applicationContext-trans.xml中的Cannot resolve bean 'dataSource'...的问题解决
问题如下: (applicationContext-trans.xml中的部分截图) 先了解问题是怎么出现的: 此处的dataSource是在applicationContext-dao.xml中配置 ...
- hbase 修复 hbase hbck
hbase hbck 新版本的 hbck 可以修复各种错误,修复选项是: (1)-fix,向下兼容用,被-fixAssignments替代 (2)-fixAssignments,用于修复region ...