请求本地图片

Posted unique1319

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请求本地图片相关的知识,希望对你有一定的参考价值。

如果js不能跨域访问本地资源,比如说图片,可以考虑通过请求的方式,通过后台访问返回到前台显示,示例如下:

后台:

    /**
     * 后台读取卫星图片返回到前台显示
     * @param imgName
     * @param request
     * @param response
     * @return
     * @throws IOException
     */
    @RequestMapping(value = "/sateImg")
    public String getSateImg(@RequestParam(value="imgName")  String imgName, HttpServletRequest request,HttpServletResponse response) throws IOException {
        ServletOutputStream out = null;
        FileInputStream ips = null;
        try {
            //获取图片存放路径
            String imgPath;
            if (isDebug.equals("true")) {
                URL dataUrl = this.getClass().getClassLoader().getResource("static/img/sate/sate.png");
                ips = new FileInputStream(new File(dataUrl.toURI()));
            } else if(isDebug.equals("false")){
                imgPath  = dir +"/sate/"+TimeUtil.format(new Date(),"yyyyMMdd")+"/" +imgName+".png";
                ips = new FileInputStream(new File(imgPath));
            }
            response.setContentType("multipart/form-data");
            out = response.getOutputStream();
            //读取文件流
            int len = 0;
            byte[] buffer = new byte[1024 * 10];
            while ((len = ips.read(buffer)) != -1){
                out.write(buffer,0,len);
            }
            out.flush();
            logger.info("获取卫星图片"+imgName+"成功");
        }catch (Exception e){
            logger.error("获取卫星图片失败");
        }finally {
            out.close();
            ips.close();
        }
        return null;
    }

 前台:

/**
 * 加载卫星图层
 */
function getSateLiteLayer() {
    if (sateLiteLayer == null) {
        var fileName = formatDate(new Date().getTime(),"ddHH") + "-" +Math.floor(new Date().getMinutes()/15);
        var imageUrl = ‘rest/sateImg?imgName=‘+fileName;
        var bounds = [[-4.96, 50.02], [59.97, 144.97]];
        sateLiteLayer = L.imageOverlay(imageUrl, bounds, {opacity: 0.8});
    }
    return sateLiteLayer;
}

 

以上是关于请求本地图片的主要内容,如果未能解决你的问题,请参考以下文章

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

QT QHttpMultiPart上传图片

如何把视频片段做成动态图片

片段中的请求权限不显示对话框

请求本地图片

VSCode自定义代码片段14——Vue的axios网络请求封装