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" ...
随机推荐
- Nginx入门(一):在centos上安装nginx
CenterOS7安装Nginx =================== 参考:https://www.xuliangwei.com/bgx/972.html nginx官网下载地址:http://n ...
- JS函数提升和变量提升
1.1什么是函数提升和变量的提升? JS引擎在运行整个JS代码的过程中,分为俩步. 第一步是读取和解析JS代码,第二部是执行. 在引擎解析JS代码的时候,当解析器遇见变量声明(var 变量名)和函数声 ...
- lightoj 1145 - Dice (I)(dp+空间优化+前缀和)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1145 题解:首先只要是dp的值只和上一个状态有关系那么就可以优化一维,然后这题 ...
- HDU 1223 还是畅通工程(最小生成树prim模板)
一个很简单的prim模板,但虽然是模板,但也是最基础的,也要脱离模板熟练打出来 后期会更新kruskal写法 #include<iostream> #include<cstdio&g ...
- 第一章(Kotlin:定义和目的)
实战Kotlin勘误 Kotlin 资源大全 Kotlin主要特征 目标平台 编写服务器端代码(典型的代表是Web应用后端) 创建Android设备上运行的移动应用(Android开发) 其他:可以让 ...
- Storm 系列(六)—— Storm 项目三种打包方式对比分析
一.简介 在将 Storm Topology 提交到服务器集群运行时,需要先将项目进行打包.本文主要对比分析各种打包方式,并将打包过程中需要注意的事项进行说明.主要打包方式有以下三种: 第一种:不加任 ...
- spring boot使用常规发送邮件
spring boot使用常规发送邮件 1.pom.xml文件依赖: <!-- javax.mail begin--> <dependency> <groupId> ...
- Python网络爬虫实战(一)快速入门
本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...
- zookeeper与kafka集群部署实现
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终, ...
- 基于DevExpress的SpreadsheetControl实现对Excel的打开、预览、保存、另存为、打印(附源码下载)
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...