• 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: 5 //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- 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[1024];
                        int n;
                        while ((n = fis.read(b)) != -1) {
                            bos.write(b, 0, 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;
        }
  • 相关阅读:
    vue之实现日历----显示农历,滚动日历监听年月改变
    vue填坑之全局引入less,scss,styl文件
    vue填坑之引入iconfont字体图标
    纯JS实现带小圆点缩略图及左右箭头的轮播图
    canvas绘制时钟
    CSS实现鼠标移入图片边框有小三角
    jquery之.outerWidth()
    CSS ::selection 选中文字效果
    LINUX下用Nginx和Node.js构建一个简单的项目(4)
    LINUX下用Nginx和Node.js构建一个简单的项目(3)
  • 原文地址:https://www.cnblogs.com/yangyuke1994/p/10194195.html
Copyright © 2020-2023  润新知