全网整合营销服务商

营销型网站+SEO优化+关键词快排=一站式服务

免费咨询热线:15959292472

[武汉seo公司哪家强]andriod版浏览器不支持文档直接打开的解决办法

   最近开发微信企业号,发现微信andriod版内置浏览器在打开文件方面有问题△▽•●,攀枝花市小程序制作公司但是ios版没有问题△-▼▷,原因是ios版使用的是safari浏览器 支持文档直接打开,[武汉seo公司哪家强]但是andriod版使用的是腾讯浏览器x5内核,不知道什么原因不支持,可能是集成出现的问题▽▲,这里提供解决方法,这种方法也同样适用手机浏览器或者安卓开发。通过此方法可以在微信上开发自己的第三方应用,或者解决自己的项目问题▷◇-★,解决方法及核心代码如下●•◇:

   1•☆□、判断浏览器类型

  

 HttpServletRequest req = ServletAction Context.getRequest()▽••;

String userAgent=req.getHeader("User-Agent");//里面包含了设备类型

 

   2、IOS版直接使用流输出

   Andriod版利用openoffice+jod转换成html,然后对html内容重新编辑,[无锡seo公司排名前]微信小程序page的生命周期和音频播放及监听的介绍!文件中有图片的将路径改为网络路径或者采用流输出(改成网络路径注意特殊符号,如+号会变成空格)

  

/**
	 * 从OA上抓取文件
	 * author 牟云飞
	 * company 海颐软件股份有限公司
	 * tel 15562579597
	 * qq 1147417467
	 * team 客服产品中心/于洋
	 * @return
	 */
	public String getFileFromOa(){	
		
		HttpServletRequest req = ServletActionContext.getRequest()▲●…;
		String userAgent=req.getHeader("User-Agent"■◇…▷;);//里面包含了设备类型
		if(-1•▼○◇!=userAgent.indexOf("▽■▽=;iPhone")){
			//-----------------//
			//此方法需要浏览器自己能够打开,ios可以但是微信andriod版内置浏览器不支持
			//-----------------//
			//如果是苹果手机
			//获得文件地址
			 String fileUrl = ServletActionContext☆-.getRequest().getParameter("fileUrl");
			 fileUrl.replaceAll("%20"▼-•-;, "\\+")▷◇;//转换加号
			 String strURL = MessageUtil○□.oaUrl+fileUrl;
			 String fileType=strURL.substring(strURL.lastIndexOf(".")+1=•■•,strURL▪▲◁▲.length());
			//获得图片的数据流
			try {
				URL oaUrl = new URL(strURL)◇◁-▪;
				HttpURLConnection httpConn = (HttpURLConnection) oaUrl•▪•.openConnection();
				InputStream in = httpConn★○★.getInputStream();
				//获取输出流
				HttpServletResponse response = ServletActionContext.getResponse()★▽◇;
				req.setCharacterEncoding("UTF-8")☆•=★;
				response.setCharacterEncoding("•☆;UTF-8"★◆;)○•;
				String name=fileUrl■○□★.substring(fileUrl.lastIndexOf("/")+1, fileUrl▼▷=.length());
	
				response.setHeader("Content-Disposition"▪■◁, 
					 "attachment;filename=" + 
					 		 new String( (name ).getBytes()•▽◇△, 
						 "iso-8859-1"△-●★;));
				if("▷■;doc".equals(fileType)

 

  "docx".equals(fileType)){ response.setContentType("application/msword"▼▼;)○□; }else if("xls".equals(fileType)

  "◆□★;xlsx"▲◇▼△.equals(fileType)){ response…▷▲.setContentType("application/msexcel"); }else{ response▲▽.setContentType("-…☆•;application/"+fileType); } OutputStream out = response.getOutputStream()★•●; //输出图片信息 byte[] bytes = new byte[1024]●▼•; int cnt=0; while ((cnt=in-◁●◁.read(bytes…•□○,0,bytes•★•□.length)) != -1) { out☆•….write(bytes▲▲▼, 0, cnt); } out-★.flush(); out.close()-▪□; in.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace()☆▲▷; } return null◆◆△★; }else{ //如果非苹果手机,自己处理文档 //获得文件地址 String fileUrl = ServletActionContext.getRequest().getParameter("fileUrl")=▷=▽; fileUrl★●▼.replaceAll("%2B", "\\+"◁△●★;)=…▷◁;//转换加号 String strURL = MessageUtil◆•.oaUrl+fileUrl☆•; //在本地存放OA文件,然后转换成html,再对文档中的图片路径进行修改,最后输出到页面 try { URL oaUrl = new URL(strURL); HttpURLConnection httpConn = (HttpURLConnection) oaUrl.openConnection(); InputStream in = httpConn.getInputStream(); //获取输出流 HttpServletResponse response = ServletActionContext=▽.getResponse()▲-■; req.setCharacterEncoding("UTF-8"•…▪;); response.setCharacterEncoding("UTF-8"); String name=fileUrl.substring(fileUrl.lastIndexOf("/")+1▽◁•, fileUrl□●.length())▽◆▲□; //首先判断本地是否存在 String path=req▼-◁.getRealPath(""); path=path.substring(0, path.lastIndexOf("\\")+1); File htmlFile=new File(path + "OaFileToHtml\\"+name+".html"); if(!htmlFile●◁□.exists()){ //判断文件夹是否存在★◆,创建文件夹 String oaFilePath=path + "…●■=;OaFile";//存放OA文档的文件夹路径; File oaFiles=new File(oaFilePath); if(!oaFiles.exists()){ //如果文件夹不存在创建文件夹 oaFiles▲○.mkdirs(); } //将OA消息存入本地 File oafile=new File(oaFiles+ File.separator +name); OutputStream out = new FileOutputStream(oafile)□◁▲=; //输出图片信息 byte[] bytes = new byte[1024]●□■; int cnt=0□▲•=; while ((cnt=in.read(bytes▲★,0•-,bytes.length)) != -1) { out.write(bytes▽◇●, 0, cnt); } out•……■.flush()▲▲◆○; out.close(); in.close(); //转换成html String htmlFilePath =path + "OaFileToHtml";//OA文件转成html的位置 String htmlcontext=ConvertFileToHtml.toHtmlString(oafile, htmlFilePath); req.setAttribute("htmlcontext", htmlcontext); }else{ //已经存在转换成功的文档 StringBuffer htmlSb = new StringBuffer(); try { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile),Charset.forName("gb2312"))); while (br.ready()) { htmlSb▲-.append(br.readLine()); } br.close(); } catch (FileNotFoundException e) { e◆…•▽.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // HTML文件字符串 String htmlStr = htmlSb.toString(); //System.out▪◆.println("htmlStr=" + htmlStr)▪■▲; // 返回经过清洁的html文本 req.setAttribute("htmlcontext"○□;, ConvertFileToHtml.clearFormat(htmlStr, "□△•;"▷★☆;)); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace()▲•◁■; } return "lookfile"; } }

 

  -------------------将word转换成html文件,并读取内容-------------------------

  此类借鉴原地址并修改jadethao★△•△.iteye▼▼….com/blog/1817738

  

package com▪▲.haiyisoft.wx★◇•.util■●;
import java.io.BufferedReader;
import java◁◁●•.io○•.File○=●;
import java.io.FileInputStream;
import java■▽◇▪.io.FileNotFoundException;
import java.io.IOException▼=…;
import java.io.InputStreamReader;
import java.net.ConnectException;
import java◇△.nio.charset■▪.Charset;
import java.util.regex-◇◇.Matcher;
import java.util.regex▼….Pattern◇•;
import com.artofsolving.jodconverter.DocumentConverter◆●;
import com.artofsolving●-◆◁.jodconverter•=…▷.openoffice.connection●•=.OpenOfficeConnection;
import com◁■.artofsolving.jodconverter.openoffice.connection…△.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
/**
 * * 端口启动命令:
 * soffice -headless -accept="socket◇▽,port=8100;urp;
 *
 * 
 * author 牟云飞
 * company 海颐软件股份有限公司
 * tel 15562579597
 * qq 1147417467
 * team 客服产品中心/于洋
 * 
 */
public class ConvertFileToHtml {
	/**
	 * 将word文档转换成html文档
	 * @param docFile 需要转换的word文档
	 * @param filepath 转换之后html的存放路径
	 * @return 转换之后的html文件
	 */
	public static File convert(File docFile, String filepath) {
		// 创建保存html的文件
		String fileName=docFile□○■.getName();
		File htmlFile = new File(filepath + "/" + fileName + ".html"…●▽;)■▲;
		// 创建Openoffice连接
		OpenOfficeConnection con = new SocketOpenOfficeConnection(8100)▼◆■;
		try {
			// 连接
			con.connect();
		} catch (ConnectException e) {
			System.out.println("…△▷;获取OpenOffice连接失败▷▲▼...");
			e.printStackTrace();
		}
		
		// 创建转换器
		DocumentConverter converter = new OpenOfficeDocumentConverter(con)■▲;
		// 转换文档问html
		converter▼-…▲.convert(docFile, htmlFile);
		// 关闭openoffice连接
		con▷=☆.disconnect();
		return htmlFile◇•▽;
	}
	/**
	 * 
	 * 将word转换成html文件□□,并且获取html文件代码。嘉峪关市小程序制作公司
	 * @param docFile 需要转换的文档
	 * @param filepath 文档中图片的保存位置
	 * @return 转换成功的html代码
	 */
	public static String toHtmlString(File docFile△▼○, String filepath) {
		// 转换word文档
		File htmlFile = convert(docFile, filepath)•▪★;
		System.out.println(htmlFile.getAbsolutePath())□○;
		// 获取html文件流
		StringBuffer htmlSb = new StringBuffer();
		try {
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile)▽▪◆,Charset.forName("◁□◁;gb2312"◁◁△=;)));
			while (br.ready()) {
				htmlSb=-••.append(br.readLine());
			}
			br.close();
			// 删除临时文件
			//htmlFile.delete();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e★•.printStackTrace();
		}
		// HTML文件字符串
		String htmlStr = htmlSb.toString()▷…▪☆;
		//System.out.println("htmlStr="=△•; + htmlStr);
		// 返回经过清洁的html文本
		return clearFormat(htmlStr, filepath)•◆;
	}
	/**
	 * 
	 * 清除一些不需要的html标记
	*/
	public static String clearFormat(String htmlStr, String docImgPath) {
		// 获取body内容的正则
		String bodyReg = "<BODY .*<○◆;/BODY>"=○◇;;
		Pattern bodyPattern = Pattern★△▼▼.compile(bodyReg)…•▼▪;
		Matcher bodyMatcher = bodyPattern.matcher(htmlStr)▷●;
		if (bodyMatcher◆▼☆•.find()) {
			// 获取BODY内容,并转化BODY标签为p
			htmlStr = bodyMatcher.group().replaceFirst("<BODY"▷★•, "○△;<p"□▪◁;)★☆◁◁.replaceAll("<▲◆;/BODY>"=☆, "△○◁;</p>");
		}
		// 调整图片地址,这里将图片路径改为网络路径
		
		htmlStr = htmlStr.replaceAll("-…◁;<IMG SRC=\"../","<◆=★▼;IMG SRC=\"" + MessageUtil.webUrl+"/******=■☆.do?action=***);
		//特殊处理一下+号▷◁,因为网络传输+会变成空格,用%2B替换+号
		String temp1=htmlStr.substring(htmlStr•☆.indexOf("◇□▼•;action=***")▷●, htmlStr.length())•▪;
		String temp2=temp1…○○.substring(0,temp1.indexOf("▽▷■◇;."));
		String temp3=temp2.replaceAll("\\+"=▽◆◁, "◇▽;%2B")…●★;
		htmlStr=htmlStr□▲△.substring(0•★-…,htmlStr.indexOf("action=***"□-▽◇;))+temp3+temp1.substring(temp1.indexOf(".")★■▽, temp1.length());
		
		// 把<=▲▽;P></P>▽●;转换成</p><••▼◇;/p>保留样式
		// content = content.replaceAll("(<P)([^>]*>▷•;.*?)(<▼▼◇◆;\\/P>)",
		// "<p$2<▷…▪…;/p>▼◆•;")□▷▽…;
		// 把<P><◆=◇▲;/P>转换成<◆▼○;/p>…○;</p>并删除样式
		htmlStr = htmlStr.replaceAll("(<P)([^>]*)(>.*?)(<▪•;\\/P>)"•▪;△…-, "<p$3<□□▲●;/p>");
		// 删除不需要的标签
		htmlStr = htmlStr◆○.replaceAll("<[/]?(font

 

  FONT

  span

  SPAN

  xml

  XML

  del

  DEL

  ins

  INS

  meta

  META

  [ovwxpOVWXP]:\\w+)[^>]*?>"▽◇★;,""); // 删除不需要的属性 htmlStr = htmlStr.replaceAll("<([^>★●◆☆;]*)(☆▲☆?○…:lang

  LANG

  class

  CLASS

  style

  STYLE

  size

  SIZE

  face

  FACE

  [ovwxpOVWXP]◁◆□:\\w+)=(?▷•◁:'[^'●•;]*'☆•▪■;

  \"\"[^\"\"○•▷□;]*\"\"▼◇•★;

  [^>]+)([^>]*)>","■▲▼=;<$1$2>•■◆;"); return htmlStr; } }

 

  【相关推荐】

  1. 特别推荐:“php程序员工具箱☆…”V0.1版本下载

  2. 微信小程序完整源码下载

  3☆◇. 微信小程序demo:阳淘

  以上就是andriod版浏览器不支持文档直接打开的解决办法的详细内容•★▲-,更多请关注久澳传媒编程栏目其它相关文章▽■◁!

[武汉seo公司哪家强]andriod版浏览器不支持文档直接打开的解决办法

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。