真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何解決andriod版瀏覽器不支持文檔直接打開(kāi)的問(wèn)題

這篇文章主要介紹如何解決andriod版瀏覽器不支持文檔直接打開(kāi)的問(wèn)題,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的西安網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

    最近開(kāi)發(fā)微信企業(yè)號(hào),發(fā)現(xiàn)微信andriod版內(nèi)置瀏覽器在打開(kāi)文件方面有問(wèn)題,但是ios版沒(méi)有問(wèn)題,原因是ios版使用的是safari瀏覽器 支持文檔直接打開(kāi),但是andriod版使用的是騰訊瀏覽器x5內(nèi)核,不知道什么原因不支持,可能是集成出現(xiàn)的問(wèn)題,這里提供解決方法,這種方法也同樣適用手機(jī)瀏覽器或者安卓開(kāi)發(fā)。通過(guò)此方法可以在微信上開(kāi)發(fā)自己的第三方應(yīng)用,或者解決自己的項(xiàng)目問(wèn)題,解決方法及核心代碼如下:

1、判斷瀏覽器類(lèi)型

 HttpServletRequest req = ServletAction Context.getRequest();
          
String userAgent=req.getHeader("User-Agent");//里面包含了設(shè)備類(lèi)型

   2、IOS版直接使用流輸出

        Andriod版利用openoffice+jod轉(zhuǎn)換成html,然后對(duì)html內(nèi)容重新編輯,文件中有圖片的將路徑改為網(wǎng)絡(luò)路徑或者采用流輸出(改成網(wǎng)絡(luò)路徑注意特殊符號(hào),如+號(hào)會(huì)變成空格)

/**
	 * 從OA上抓取文件
	 * author  牟云飛
	 * company 海頤軟件股份有限公司
	 * tel     15562579597
	 * qq      1147417467
	 * team    客服產(chǎn)品中心/于洋
	 * @return
	 */
	public String getFileFromOa(){	
		
		HttpServletRequest req = ServletActionContext.getRequest();
		String userAgent=req.getHeader("User-Agent");//里面包含了設(shè)備類(lèi)型
		if(-1!=userAgent.indexOf("iPhone")){
			//-----------------//
			//此方法需要瀏覽器自己能夠打開(kāi),ios可以但是微信andriod版內(nèi)置瀏覽器不支持
			//-----------------//
			//如果是蘋(píng)果手機(jī)
			//獲得文件地址
			 String fileUrl = ServletActionContext.getRequest().getParameter("fileUrl");
			 fileUrl.replaceAll("%20", "\\+");//轉(zhuǎn)換加號(hào)
			 String strURL = MessageUtil.oaUrl+fileUrl;
			 String fileType=strURL.substring(strURL.lastIndexOf(".")+1,strURL.length());
			//獲得圖片的數(shù)據(jù)流
			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{
			//如果非蘋(píng)果手機(jī),自己處理文檔
			
			//獲得文件地址
			String fileUrl = ServletActionContext.getRequest().getParameter("fileUrl");
						
			fileUrl.replaceAll("%2B", "\\+");//轉(zhuǎn)換加號(hào)
			String strURL = MessageUtil.oaUrl+fileUrl;
			//在本地存放OA文件,然后轉(zhuǎn)換成html,再對(duì)文檔中的圖片路徑進(jìn)行修改,最后輸出到頁(yè)面
			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()){
					//判斷文件夾是否存在,創(chuàng)建文件夾
					String oaFilePath=path + "OaFile";//存放OA文檔的文件夾路徑;
					File oaFiles=new File(oaFilePath);
					if(!oaFiles.exists()){
						//如果文件夾不存在創(chuàng)建文件夾
						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();
					//轉(zhuǎn)換成html
					String htmlFilePath =path + "OaFileToHtml";//OA文件轉(zhuǎn)成html的位置
					String htmlcontext=ConvertFileToHtml.toHtmlString(oafile, htmlFilePath);
					req.setAttribute("htmlcontext", htmlcontext);
				}else{
					//已經(jīng)存在轉(zhuǎn)換成功的文檔
					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);
					// 返回經(jīng)過(guò)清潔的html文本
					req.setAttribute("htmlcontext", ConvertFileToHtml.clearFormat(htmlStr, ""));
				}
				
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return "lookfile";
		}
		
	}

-------------------將word轉(zhuǎn)換成html文件,并讀取內(nèi)容-------------------------

此類(lèi)借鑒原地址并修改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;

/**
 * * 端口啟動(dòng)命令:
 * soffice -headless -accept="socket,port=8100;urp;
 *
 * 
 * author  牟云飛
 * company 海頤軟件股份有限公司
 * tel     15562579597
 * qq      1147417467
 * team    客服產(chǎn)品中心/于洋
 * 
 */
public class ConvertFileToHtml {
	/**
	 * 將word文檔轉(zhuǎn)換成html文檔
	 * @param docFile   需要轉(zhuǎn)換的word文檔
	 * @param filepath  轉(zhuǎn)換之后html的存放路徑
	 * @return 轉(zhuǎn)換之后的html文件
	 */
	public static File convert(File docFile, String filepath) {

		// 創(chuàng)建保存html的文件
		String fileName=docFile.getName();
		File htmlFile = new File(filepath + "/" + fileName + ".html");
		// 創(chuàng)建Openoffice連接
		OpenOfficeConnection con = new SocketOpenOfficeConnection(8100);
		try {
			// 連接
			con.connect();
		} catch (ConnectException e) {
			System.out.println("獲取OpenOffice連接失敗...");
			e.printStackTrace();
		}
		
		// 創(chuàng)建轉(zhuǎn)換器
		DocumentConverter converter = new OpenOfficeDocumentConverter(con);
		// 轉(zhuǎn)換文檔問(wèn)html
		converter.convert(docFile, htmlFile);
		// 關(guān)閉openoffice連接
		con.disconnect();
		return htmlFile;
	}

	/**
	 * 
	 * 將word轉(zhuǎn)換成html文件,并且獲取html文件代碼。
	 * @param docFile  需要轉(zhuǎn)換的文檔
	 * @param filepath  文檔中圖片的保存位置
	 * @return 轉(zhuǎn)換成功的html代碼
	 */
	public static String toHtmlString(File docFile, String filepath) {
		// 轉(zhuǎn)換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();
			// 刪除臨時(shí)文件
			//htmlFile.delete();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		// HTML文件字符串
		String htmlStr = htmlSb.toString();
		//System.out.println("htmlStr=" + htmlStr);
		// 返回經(jīng)過(guò)清潔的html文本
		return clearFormat(htmlStr, filepath);
	}

	/**
	 * 
	 * 清除一些不需要的html標(biāo)記
	*/

	public static String clearFormat(String htmlStr, String docImgPath) {

		// 獲取body內(nèi)容的正則
		String bodyReg = "";
		Pattern bodyPattern = Pattern.compile(bodyReg);
		Matcher bodyMatcher = bodyPattern.matcher(htmlStr);
		if (bodyMatcher.find()) {
			// 獲取BODY內(nèi)容,并轉(zhuǎn)化BODY標(biāo)簽為p
			htmlStr = bodyMatcher.group().replaceFirst("", "

"); } // 調(diào)整圖片地址,這里將圖片路徑改為網(wǎng)絡(luò)路徑 htmlStr = htmlStr.replaceAll("

轉(zhuǎn)換成

保留樣式 // content = content.replaceAll("(]*>.*?)(<\\/P>)", // ""); // 把

轉(zhuǎn)換成

并刪除樣式 htmlStr = htmlStr.replaceAll("(]*)(>.*?)(<\\/P>)", ""); // 刪除不需要的標(biāo)簽 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; } }

以上是“如何解決andriod版瀏覽器不支持文檔直接打開(kāi)的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


網(wǎng)頁(yè)標(biāo)題:如何解決andriod版瀏覽器不支持文檔直接打開(kāi)的問(wèn)題
文章起源:http://weahome.cn/article/poicog.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部