精华内容
下载资源
问答
  •  说下背景,项目遇到前端js获取图片发生跨域的问题,服务器端又不支持匿名访问,只能通过服务器获取图片base64码进行展示。代码如下: /** * 远程读取image转换为Base64字符串 * @param imgUrl * @return ...

           说下背景,项目中遇到前端js获取图片发生跨域的问题,服务器端又不支持匿名访问,只能通过服务器获取图片base64码进行展示。代码如下:

    /**
     * 远程读取image转换为Base64字符串
     * @param imgUrl
     * @return
     */
    private String Image2Base64(String imgUrl) {
    	URL url = null;
    	InputStream is = null; 
    	ByteArrayOutputStream outStream = null;
    	HttpURLConnection httpUrl = null;
    	try{
    		url = new URL(imgUrl);
    		httpUrl = (HttpURLConnection) url.openConnection();
    		httpUrl.connect();
    		httpUrl.getInputStream();
    		is = httpUrl.getInputStream();			
    		
    		outStream = new ByteArrayOutputStream();
    		//创建一个Buffer字符串
    		byte[] buffer = new byte[1024];
    		//每次读取的字符串长度,如果为-1,代表全部读取完毕
    		int len = 0;
    		//使用一个输入流从buffer里把数据读取出来
    		while( (len=is.read(buffer)) != -1 ){
    			//用输出流往buffer里写入数据,中间参数代表从哪个位置开始读,len代表读取的长度
    			outStream.write(buffer, 0, len);
    		}
    		// 对字节数组Base64编码
    		return new BASE64Encoder().encode(outStream.toByteArray());
    	}catch (Exception e) {
    		e.printStackTrace();
    	}
    	finally{
    		if(is != null)
    		{
    			try {
    				is.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		if(outStream != null)
    		{
    			try {
    				outStream.close();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		if(httpUrl != null)
    		{
    			httpUrl.disconnect();
    		}
    	}
    	return imgUrl;
    }

     

    展开全文
  • 网上找了很多方法,要么说JS不能转,要么就是转换不了,以下是找到的完美的解决方法, ```javascript function convertImgToBase64(url, callback, outputFormat){ var canvas = document.createElement('CANVAS'...

    网上找了很多方法,要么说JS不能转,要么就是转换不了,以下是找到的完美的解决方法,

    只能解决开了允许跨域的

    不行的,建议参考这个
    https://segmentfault.com/q/1010000008648867

    放服务器上就没问题了,那样就是同源了,可以访问了

    还可以写个接口进行重定向一下,再通过接口获取后端的图片地址

    
    	function convertImgToBase64(url, callback, outputFormat) {
    				var canvas = document.createElement('CANVAS'),
    					ctx = canvas.getContext('2d'),
    					img = new Image;
    					img.crossOrigin = 'Anonymous';
    					img.onload = function() {
    						canvas.height = img.height;
    						canvas.width = img.width;
    						ctx.drawImage(img, 0, 0);
    						var dataURL = canvas.toDataURL(outputFormat || 'image/png');
    						callback.call(this, dataURL);
    						canvas = null;
    					};
    					img.src = url;
    			}
    			convertImgToBase64('https://www.baidu.com/img/bd_logo1.png', function(base64Img) {
    				// Base64DataURL
    				console.log(base64Img[1]);
    				console.log(base64Img);
    				document.getElementsByTagName("img")[0].setAttribute("src",base64Img)
    			});
    
    展开全文
  • 本文讲的是在线预览服务器pdf。若是值查看固定的(项目的)pdf的话直接看官网,这里不再说明。1.首先下载pdf.jshttps://github.com/mozilla/pdf.js下载后放入工程的静态文件目录,主要有build和web两个文件夹,...

    本文讲的是在线预览服务器中pdf。若是值查看固定的(项目中的)pdf的话直接看官网,这里不再说明。



    1.首先下载pdf.js

    https://github.com/mozilla/pdf.js

    下载后放入工程的静态文件目录,主要有build和web两个文件夹,其中web有两个js(getpdfInfo.js和jquery.min.js)是我自己后来加的




    2.在点击预览的页面(我的是jsp页面)写点击预览跳转页面:

    参数说明:pdfUrl是循环动态的服务器中的pdf地址,path是当前请求的前缀

    //点击pdf预览 
    function openPDF(url){
    	window.open(path+"static/mobile/approval/web/viewer.html?pdfUrl="+url+"&path="+path);
    	}

    3.在viewer.html页面调用viewer.js页面接收这两个参数


    代码如下:

    <script src="jquery.min.js"></script>
    <!--获取html传的参数-->
    <script type="text/javascript">
    function GetQueryString(name)
    {
         var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
         var r = window.location.search.substr(1).match(reg);
         if(r!=null)return  unescape(r[2]); 
         return null;
    }
    var pdfurl=GetQueryString("pdfUrl");
    var path=GetQueryString("path");
    </script>
    <script src="getpdfInfo.js"></script>

    在接收参数前调用了Jquery.min.js,因为在下面getpdfInfo.js里是需要调用ajax去后台,以读取pdf文件流的方式获取pdf文件。


    4.getpdfInfo.js代码如下

    //获取pdf文件流
    var DEFAULT_URL = "";//注意,删除的变量在这里重新定义  
    var PDFData = "";  
    $.ajax({  
        type:"post",  
        async:false,  //
        mimeType: 'text/plain; charset=x-user-defined',  
        url:path+"/approval/getPdf.do?pdfurl="+pdfurl,  
        success:function(data){  
        	PDFData = data;  
        }  
    });  
    var rawLength = PDFData.length; 
    //转换成pdf.js能直接解析的Uint8Array类型,见pdf.js-4068  
    var array = new Uint8Array(new ArrayBuffer(rawLength));    
    for(i = 0; i < rawLength; i++) {  
      array[i] = PDFData.charCodeAt(i) & 0xff;  
    }  
    DEFAULT_URL = array; 

    这步很简单,就发送ajax请求。


    5.相应的后台代码:

     /**
         * 获取远程服务器pdf的文件流
         * @param request
         * @param response
         */
        @RequestMapping(value = "/getPdf")
    	@ResponseBody
        public void  getPdfInfo(HttpServletRequest request, HttpServletResponse response) { 
        	String pdfUrl=request.getParameter("pdfurl");
        	logger.info("<==class:ApprovalController|getPdfInfo|pdfUrl:"+pdfUrl);
        	if(!StringUtils.isBlank(pdfUrl)){
    			InputStream fis=null;
    	        try {  
    	            try {  
    	            	request.setCharacterEncoding("utf-8");
    	            	response.setCharacterEncoding("utf-8");
    	                URL url=new URL(pdfUrl);
    	                //打开请求连接
    	                URLConnection connection = url.openConnection();
    	                HttpURLConnection conn=(HttpURLConnection) connection;
    	                conn.setConnectTimeout(20000);
    	                conn.setReadTimeout(20000);
    	                conn.connect();
    	                response.setContentType("application/pdf");
    	        		ServletOutputStream sos=response.getOutputStream();
    	        		fis=conn.getInputStream();
    	        		int b;
    	        		while((b=fis.read())!=-1){
    	        			sos.write(b);
    	        		}
    	        		sos.close(); 
    	        		fis.close();
    	            } catch (IOException e) {  
    	                System.out.println(e.getMessage());
    	            }  
    	        } catch (Exception e) {  
    	            System.out.println(e.getMessage());
    	        }  
    	    }
        }

    (注意:这里的参数pdfUrl是浏览器直接可以访问的连接,格式是ip+端口加图片地址后缀,这样读取方式有时候会有问题(网络连接超时等问题)。这里建议用下面方式读取,即取绝对路径(路径可做成系统参数+图片路径)比如"/usr/etc/img/aaa.jpg"形式读取)

    代码如下

     /**
         * 获取远程服务器pdf的文件流
         * @param request
         * @param response
         */
        @RequestMapping(value = "/getPdf")
    	@ResponseBody
        public void  getPdfInfo(HttpServletRequest request, HttpServletResponse response) { 
        	String pdfUrl=request.getParameter("pdfurl");
        	if(!StringUtils.isBlank(pdfUrl)){
        		String filePath = reimburseService.getReimburseString("reimburse.img.path");//获取系统参数
        		pdfUrl=pdfUrl.substring(pdfUrl.lastIndexOf("/"),pdfUrl.length());
        		pdfUrl=filePath+pdfUrl;  //拼接系统参数和图片路径
        	}
        	logger.info("<==class:ApprovalController|getPdfInfo|pdfUrl:"+pdfUrl);
        	File file = new File(pdfUrl);
            byte[] data = null;
            try {
                FileInputStream input = new FileInputStream(file);
                data = new byte[input.available()];
                input.read(data);
                response.getOutputStream().write(data);
                input.close();
            } catch (Exception e) {
                logger.error("class:ApprovalController getPdfInfo error:" + e.getMessage());
            }
        }



    6.最后一步,注释掉viewer.js中的var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf';

    因为这个变量DEFAULT_URL我们重新在getpdfInfo.js定义读取了。


    这样基本就可以了。不管是pc端还是手机端的h5都有成功预览的。顺便提一下,ios可以用直接预览。


    所以如果写在手机端的话,之前那个页面(第二步)可以分别对安卓和ios分类操作:

    //点击pdf预览 
    function openPDF(url){
    	//判断终端
    	var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; // android终端
    	var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
    	if (isAndroid) {
    		window.open(path+"static/mobile/approval/web/viewer.html?pdfUrl="+url+"&path="+path);
    	}
    	else
    	{
    		window.location.href = 'http://localhost/goPdfView/'+url;
    	}
    	
    	}







    展开全文
  • 可能没有启用远程连接或者计算机太忙不能接受新的连接。也可能是网络问题阻止连接。请稍后重新尝试连接。如果问题仍然存在 请与管理员联系。解决方法:1.首先确认远程登陆的服务是打开的,也就是Remote Desktop ...

    问题:

    客户端无法连接到远程计算机。

    可能没有启用远程连接或者计算机太忙不能接受新的连接。

    也可能是网络问题阻止连接。请稍后重新尝试连接。

    如果问题仍然存在 请与管理员联系。

    解决方法:

    1.首先确认远程登陆的服务是打开的,也就是Remote Desktop Services(Windows xp里面是Terminal Services)服务:右键我的电脑--管理--服务,找到Terminal Services服务,启动这个服务即可

    2.右键我的电脑--属性--远程,勾选“允许用户远程登陆到服务器”

    当然也可以在注册表中打开,依次展开HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\Terminal Server

    然后在右栏中找到“fDenyTSConnections”键

    双击打开后将该键值修改为“0”,点击“确定”按钮,最后关闭注册表编辑器。

    3.查看远程桌面端口号

    查看远程主机接受远程连接默认端口可以从注册表中或者其它第三方软件查看并修改。例如

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp

    找到“PortNumber”子项,您会看到值 00000D3D,它是 3389 的十六进制表示形式。使用十六进制数值修改此端口号,并保存新值。

    4.检查是否有防火墙策略组织了远程桌面连接。

    5.检查端口是否打开

    netstat -an

    或者使用telnet的方法

    6.重启计算机。

    win 10 远程连接出现 &quot&semi;由于安全设置错误&comma; 客户端无法连接到远程计算机&period; 确定你已登录到网络后&period;” 错误

    win 10 远程连接出现 "由于安全设置错误, 客户端无法连接到远程计算机. 确定你已登录到网络后.” 错误 解决方法如下: Step 1:打开"本地安全策略"- Wi ...

    navicate premium连接sqlserver时报08001错误的解决方法

    ---恢复内容开始--- navicate premium连接sqlserver时报08001错误的解决方法 1.自己一直使用navicate连接sqlserver,但是自从自己的电脑安装了sqlse ...

    virtualbox虚拟机中mysql远程连接登陆报2003错误的解决方法

    最近在virtualbox中安装了Ubuntu 14,配置了一个mysql server,设置的桥接网络模式.在其他电脑连接的时候,总是报2003错误.开始以为是localhost没有置换为%,运行u ...

    navicat连接mysql出现2059错误的解决方法

    安装navicat之后新建连接出现了2059的错误 网上查询过后,发现这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则 ...

    Windows 2012r2 以及以上版本远程提示错误的解决方法

    部分机器远程时会提示如图: 其实解决问题非常简单 .... 为了防止不会操作 完整的截图展示. 服务器下面进行处理 打开我的电脑 属性 打开远程设置 将框中的选项取消掉 然后就可以了.

    关于win8&period;1&ldquo&semi;连接被远程计算机关闭&rdquo&semi;的一种解决方案

    我就是连接的时候出现"连接被远程计算机关闭",然后想着可能是win8更新之后网络协议 出问题了,后来无意中发现e信在第一次启动的时候会在网络适配器中会多出很多网卡,其中三个是带感叹 ...

    c&num; 基础连接已经关闭&colon; 连接被意外关闭&comma;错误的解决

    原文:c# 基础连接已经关闭: 连接被意外关闭,错误的解决 调试一个使用HttpWebRequest模拟提交表单的程序的时候频繁出现上述错误提示,google了一下发现了几个解决方案.1.在appli ...

    Sqlserver 2008 error 40出现连接错误的解决方法

    说明(2017-5-25 15:00:16): 核心:把端口号改成1433 Sqlserver 2008 error 40出现连接错误的解决方法

    随机推荐

    iOS检测用户截屏并获取所截图片

    iOS检测用户截屏并获取所截图片 微信可以检测到用户截屏行为(Home + Power),并在稍后点击附加功能按钮时询问用户是否要发送刚才截屏的图片,这个用户体验非常好.在iOS7之前, 如果用户截屏 ...

    【WEB】原理 之 线程池

    问题描述:我们获取连接超过连接池最大值时产生如上异常.通常连接池最大值为100.当我们获取连接超过最大值时,WEB等待连接池返回连接而超时,这样将抛出如上异常解决办法:首先要做的是在我们使用连接后立即 ...

    APCS

    arm汇编程序中,R0,R1,R2,R3,R12都是作为中间寄存器,而R4-R11是不能随便使用的,暂时我还不知它们的用途.所以,中间寄存器,在程序运行的开始处与结束的时候值是可以不一样的,也就是说中 ...

    javascript设计模式——Publish&sol;Subscribe

    推荐阅读http://dev.housetrip.com/2014/09/15/decoupling-javascript-apps-using-pub-sub-pattern/ 我们先引出问题的所在 ...

    JavaWeb基础之tomcat部署

    有些东西,看起来简单,做起来也简单,简单的你并不一定知道! 问题:如何将一个java project转变为 web project,并使其自动部署到tomcat? 1.先建立一个Java Projec ...

    setTimeOut和setInterval详解

    setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的 ...

    No&period;3小白的HTML&plus;CSS心得篇

    A--看的东西多了总会出现好多模糊不清的又长的很像的的词语 今天对此进行区别分析下 1. align 与 text-align的区别 align 在W3Cschool中是这样解释的  ----alig ...

    Java基础4-面向对象概述&semi;super&lpar;&rpar;&semi;this&lpar;&rpar;

    昨日内容回顾 java基本数据类型: byte : 一个字节,-128 ~ 127 = 256 short : 两个字节, -32768 ~ 32767 int : 四个字节, long : 八个字节 ...

    Asp&period;net core 学习笔记 2&period;1 升级到 2&period;2

    首先跟着官网 step by step https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore- ...

    Thinkphp5 分页带参数

    原文链接:http://www.zhaisui.com/article/51.html

    展开全文
  • git连接远程仓库码云及命令详解

    千次阅读 2020-03-20 14:35:28
    git连接远程仓库码云及命令详解前言新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右...
  • 前几篇文章分别阐述了如何抓取windows桌面图像,以及相关摄像头,电脑内部声音等采集,相关连接如下: http://blog.csdn.net/fanxiushu/article/details/73269286 (抓屏技术总览 MirrorDriver,DXGI,GDI) ...
  • 虽然vps也便宜,但还是...远程登录远程登录方式远程登录操作6.硬件netstattemp 1.烧录系统 1.官方工具: https://www.raspberrypi.org/software/ 可以在线选择要安装的系统和直接烧录sd卡 sd卡需要8g以上,否则失败 2.ss
  • 浏览器预览远程ftp图片

    万次阅读 2017-11-22 14:55:17
    最近遇到个需求,要在页面上显示ftp端的图片,但是不要下载到本地。 思路一:从后台传来图片路径,直接在img的src写入ftp图片路径,发现不显示,百度后发现需要同时传入ftp的用户名和密码,写法如下: 尝试了...
  • 1.前台的jsp页面设置一张图片和对应按钮如下: ``` ${pageContext.request.contextPath}/user/captcha-image.do" id="kaptchaImage" class="img-sty"/> ()">换一张 ``` 2.按钮的点击事件,JavaScript函数...
  • 2.通过正则表达式获取到img标签的src地址 3.将获取到的地址通过ajax传到后台进行下载,并将保存后的地址返回到前台 4.获取后台返回的url进行替换 5.调用kindeditor编辑器的同步函数 将源码和HTM...
  • 几个月前折腾了一番... 这里用Livy 的REST的请求方式,来实现将代码片远程分布式提交到集群去. Livy会提供一个类似客户端连接的REST请求方式, 它是一种长连接,连接之后,就可以远程上传代码片了. 安装: 文档链接: ...
  • 获取富文本,或html图片链接

    千次阅读 2019-04-08 16:55:21
    /** * 得到网页中图片的地址 */ public static String getImgStr(String htmlStr) { Set<String> pics = new HashSet<>(); String img = ""; Pattern p_image; Mat...
  • 此程序可以和所有连接到Openfire服务器的应用进行通信、发送消息。如果要运行本程序还需要一个聊天服务器Openfire, 以及需要用到Http方式和Openfire通信的第三方库(JabberHTTPBind)。 JabberHTT
  • worker_processes表示当前VPS/服务器的CPU核心数,我们可以通过 grep ^processor /proc/cpuinfo | wc -l 检测和修改。 B - 检查启动sendfile, tcp_nopush, gzip,以及添加INDEX.PHP文件 sendfile on ; ...
  • 本文与《【Servlet】Javaweb,利用新浪api接口,获取IP地址,并获取相应的IP归属地》(点击打开链接)为姊妹篇,只是后端编程语言换成了php。 做出同样的效果,打开页面,得到客户端的ip,并获取利用新浪api接口...
  • 虽然设置了widthCredentials为true的请求会包含远程域的所有cookie,但这些cookie仍然遵循同源策略,所以外域是访问不了这些cookie的,现在我们就可以安全地跨域访问啦。 www.cnblogs.com/xiaohuochai… 一、input...
  • 在Dubbo开发REST风格的远程调用
  • 前端实现桌面远程(一) 文章目录前端实现桌面远程(一)前言一、需要的条件?...作为一个全栈工程师,目前掌握的技能有js、node.js以及golang,结合目前我所掌握的技能,我能想到的方法只有2种:
  • 提出了运用正则表达式匹配替换多余HTML源文件和直接在HTML源文件匹配提取元数据的两种获取远程数据的方法,同时完成了数据解析、提取及保存的整个过程,并将文章所附有的附件、图片及音频等文件下载到本地服务器。...
  • php读取url连接图片,输出到浏览器

    千次阅读 2017-08-23 10:26:00
    header('Content-Type: application/pdf'); // PDF文件 $fp = fopen($ret->url, "rb"); //二进制方式打开文件 fpassthru($fp); // 输出至浏览器 exit;...如果是图片,就修改header头 ...
  • 远程过程调用(RPC)详解

    万次阅读 2016-07-11 00:12:33
    本文介绍了什么是远程过程调用(RPC),RPC 有哪些常用的方法,RPC 经历了哪些发展阶段,以及比较了各种 RPC 技术的优劣。
  • 在项目开发过程有时候需要将远程连接图片加载到本地存放,供以后使用,但是在cocos 官方文档里面没有详细的介绍存放到本地的方法,现在在这里讲述如何将远程资源加载到本地进行保存 首先新建一个对象类专门用来...
  • 你将学到 拍照并通过canvas标签获取图片数据. 与远程用户交换图片数据.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,715
精华内容 7,086
关键字:

js中通过远程链接获取图片