1. 程式人生 > >layui 上傳圖片回顯並點選放大實現

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-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[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;
    }