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" ...
随机推荐
- php中++ --运算
$x = 5; echo $x; echo "---"; // echo ++$x + $x; //6+6=12 $x=6 // echo ++$x + 5; //6+5=12 $ ...
- SqlServer关于“无法删除数据库 "XXXX",因为该数据库当前正在使用”问题的解决方案
引言 在项目中,通过使用SQL语句“DROP DATABASE [数据库名]”删除数据时,一直出现“无法删除数据库 "XXXX",因为该数据库当前正在使用”的错误信息,经测试在Sq ...
- Linux 下安装 mysql8
1.下载mysql wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar 2. ...
- DOM的高级操作-一种JS控制元素的视觉假象
1.运动中的边界处理(让其在一个指定区域内运动) 当元素的offsetLeft值超出一定距离或达到一个我们想要设置的边界值时,停止计时器. var timer; timer = setInterval ...
- Badboy中创建Suite, test, step和Template
参考: http://leafwf.blog.51cto.com/872759/1111744 http://www.51testing.com/html/00/130600-1367743.html ...
- ZOJ -2112 Dynamic Rankings 主席树 待修改的区间第K大
Dynamic Rankings 带修改的区间第K大其实就是先和静态区间第K大的操作一样.先建立一颗主席树, 然后再在树状数组的每一个节点开线段树(其实也是主席树,共用节点), 每次修改的时候都按照树 ...
- CodeForces 283C World Eater Brothers
World Eater Brothers 题解: 树DP, 枚举每2个点作为国家. 然后计算出最小的答案. 首先我们枚举根, 枚举根了之后, 我们算出每个点的子树内部和谐之后的值是多少. 这样val[ ...
- 杭电多校第十场 hdu6434 Count 欧拉函数打表 快速打表模板
Problem I. Count Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
- 牛客第五场多校 J plan 思维
链接:https://www.nowcoder.com/acm/contest/143/J来源:牛客网 There are n students going to travel. And hotel ...
- 面试加分项-HashMap源码中这些常量的设计目的
前言 之前周会技术分享,一位同事讲解了HashMap的源码,涉及到一些常量设计的目的,本文将谈谈这些常量为何这样设计,希望大家有所收获. HashMap默认初始化大小为什么是1 << 4( ...