1. 程式人生 > >Html中img控制元件的src屬性

Html中img控制元件的src屬性

方式一:

直接給src屬性一個伺服器端資源的地址,img控制元件會自動獲取並解析資源。

方式二:

當訪問的資源不在工程路徑下時,想到的辦法是通過返回給img控制元件位元組流,讓img控制元件解析,開始直接將ajax非同步獲取的位元組流設給了img的src屬性,發現無法顯示圖片,通過http://blog.csdn.net/doulinxu/article/details/59636710的指點,完成通過給src屬性賦予位元組資料來顯示資料,大致為:位元組流先在伺服器端進行Base64編碼,在輸出前需要將MIME的字串位元組輸出,程式碼如下:

@RequestMapping(value="viewDirect")
	public void viewDirect(@RequestParam String url,HttpServletResponse response) throws Exception {
		String filePath = baseDir + "/" + url;
		File file = new File(filePath);
		if (file.exists()&&file.isFile()) {
			String suffix = url.substring(url.lastIndexOf("."), url.length());
			if (suffix==null) {
				return;
			}
			String metaType = "";
			if (suffix.equalsIgnoreCase("jpg")||suffix.equalsIgnoreCase("jpeg")||suffix.equalsIgnoreCase("jpe")) {
				metaType = "data:image/jpeg;base64,";
			}else if (suffix.equalsIgnoreCase("gif")) {
				metaType = "data:image/gif;base64,";
			}else if (suffix.equalsIgnoreCase("bmp")) {
				metaType = "data:image/bmp;base64,";
			}else {
				metaType = "data:image/jpeg;base64,";//預設解碼方式,不合適
			}
			
			InputStream inputStream = new FileInputStream(file);
			ServletOutputStream outputStream = response.getOutputStream();
			
//			outputStream.write(metaType.getBytes());
//			int length = -1;
//			byte[] buffer = new byte[1024];
//			while ((length=inputStream.read(buffer, 0, 1024))!=-1) {
//				byte[] buf;
//				if (length<1024) {
//					byte[] remain = new byte[length];
//					System.arraycopy(buffer, 0, remain, 0, length);
//					buf = Base64Utils.encode(remain);
//				}else {
//					buf = Base64Utils.encode(buffer);
//				}
//				outputStream.write(buf);
//			}
			
			
			byte[] bytes = new byte[(int) file.length()];
			inputStream.read(bytes);
			outputStream.write(metaType.getBytes());//這一行程式碼直接影響是否將接下來的位元組解析為圖片
			outputStream.write(Base64Utils.encode(bytes));
			
			inputStream.close();
			outputStream.flush();
			outputStream.close();
		}
	}

html程式碼為:

$.get('${pageContext.request.contextPath }/image/viewDirect',{url:imgs[index]},function(data){
		        	$("#img").attr("src",data);
		        }) 

方式三:

最直接的方法,第二種方法相當於繞了個彎路,其實直接將連結給src屬性,即使不是伺服器工程下的資源,只要img控制元件通過這個src指定的連結能夠獲取到正確的位元組流,就可以正確解析圖片了。程式碼如下:

html程式碼:

$("#img").attr("src",'${pageContext.request.contextPath }/image/viewDirect?url='+imgs[index]);
伺服器端程式碼為:
	@RequestMapping(value="viewDirect")
	public void viewDirect(@RequestParam String url,HttpServletResponse response) throws Exception {
		String filePath = baseDir + "/" + url;
		File file = new File(filePath);
		if (file.exists()&&file.isFile()) {
			InputStream inputStream = new FileInputStream(file);
			ServletOutputStream outputStream = response.getOutputStream();
			//方式一
			int length = -1;
			byte[] buffer = new byte[1024];
			while ((length=inputStream.read(buffer, 0, 1024))!=-1) {
				outputStream.write(buffer,0,length);
			}
			//方式二
//			BufferedImage image = ImageIO.read(file);
//			ImageIO.write(image,"JPEG",response.getOutputStream());
			
			//方式三
//			byte[] bytes = new byte[(int) file.length()];
//			inputStream.read(bytes);
//		//	outputStream.write(metaType.getBytes());//這一行程式碼直接影響是否將接下來的位元組解析為圖片
////			outputStream.write(Base64Utils.encode(bytes));
//			outputStream.write(bytes);
			
			inputStream.close();
			outputStream.flush();
			outputStream.close();
		}
	}


相關推薦

Htmlimg控制元件src屬性

方式一:直接給src屬性一個伺服器端資源的地址,img控制元件會自動獲取並解析資源。方式二:當訪問的資源不在工程路徑下時,想到的辦法是通過返回給img控制元件位元組流,讓img控制元件解析,開始直接將ajax非同步獲取的位元組流設給了img的src屬性,發現無法顯示圖片,通過

HTMLimg標籤的src屬性絕對路徑問題解決辦法,完全解決!

需求:有時候自己的專案img的src路徑需要用到本地某資料夾下的圖片,而不是直接使用專案根目錄下的圖片。 場景:eclipse,tomcat,html,img,src,java 注意:不需要尋找tomcat真實路徑下的server.xml去修改,這個地方不需要修改。 解決辦法:1、在ec

base64編碼的圖片在HTMLimg控制元件顯示

最近在做一個移動web app專案的開發,將客戶經理與客戶的聊天功能搬到手機中(類似微信聊天),其中客戶經理的頭像由原電腦端的聊天專案組同事提供。他們儲存在資料庫中的圖片資訊為varbinary型別的數值,也就是以二進位制資料儲存。自己寫了個根據客戶經理的ID查詢其頭像資訊

C#正則表示式提取HTMLIMG標籤的SRC地址

原文:http://blog.csdn.net/smeller/article/details/7108502 一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不

Android開發——Java更改ImageView控制元件src屬性

Android開發——Java更改ImageView控制元件src屬性 一、ImageView控制元件 1、先在drawable資料夾中放置一個名叫icon的圖片,再在xml檔案中建立一個ImageView <ImageView android:id="@+

正則表示式提取HTMLIMG標籤的SRC地址

一般來說一個 HTML 文件有很多標籤,比如“<html>”、“<body>”、“<table>”等,想把文件中的 img 標籤提取出來並不是一件容易的事。由於 img 標籤樣式變化多端,使提取的時候用程式尋找並不容易。於是想要尋找它們就

ASP.NET ValidationGroup[控制元件屬性]:分組驗證的使用

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Dome5.aspx.cs" Inherits="Dome5" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit

JavaScript查詢Html字串img標籤替換src屬性的內容

JavaScript示例程式碼如下:  var newContent= content.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi,function(match,capture){   //capture

webpack 處理htmlimgsrc引入的圖片

webpack在管理模組,處理各種資源上都是無往不利,但唯獨在處理html上比較困難,不識別html中img標籤src引入的圖片。  html-webpack-plugin這種外掛輔助處理html非常好,但卻仍然未解決html程式碼中的圖片問題,未免美中不足。在遍尋開源模

SOUI使用img控制元件顯示jpg圖片的方法

1.標頭檔案 #include "../../controls.extend/FileHelper.h" #include <GdiPlus.h> #pragma comment(lib,"gdiplus")   2.建立控制元件 SImageWnd* m_pI

ElementUISwitch控制元件屬性值為Number時報錯的問題

ElementUI中Switch控制元件屬性值為Number時報錯問題 1.使用element-ui中switch控制元件時,如果為該控制元件屬性值賦值為數字時,這時瀏覽器會報錯,但是還是能正常顯示效果,為了解除這個報錯,我們可以將該控制元件屬性值為數字的屬性改為單向繫結:如下

C# WinFormDateTimePicker控制元件的Text屬性和Value屬性

在WinForm中經常會用到DateTimePicker這個控制元件,用這個控制元件獲取時間會使用到Text屬性或者Value屬性。 關於這兩個屬性,還是存在著一些的不同,在這裡簡單的測試和總結一下。

C#combobox 控制元件屬性、事件、方法

一 、combobox 屬性、事件、方法公共屬性 名稱 說明 AccessibilityObject 獲取分配給該控制元件的 AccessibleObject。AccessibleDefaultActionDescription 獲取或設定控制元件的預設操作說明,供輔助功能客戶端應用程式使用。Acces

HTMLimg標籤src路徑的值需要設定成一個變數來表示

在Java開發中,有時候會遇到在顯示圖片時不需要給圖片的src路徑設定成固定的,而是需要寫入從後臺資料庫傳入的路徑變數,下面給出瞭解決此問題的方法。<script> var pictureUrl = data.url;//後臺傳入的圖片路徑,url指的是資料

WPF PasswordBox控制元件的Password屬性不能Binding問題解決方法

最近用到了PasswordBox控制元件,但是發現Password屬性不能Binding,因為它不是依賴屬性,在網上找了找解決方法,自己做了小Demo,方便以後使用。 一、前臺檔案內容 <Window x:Class="PasswordBoxDemo.MainWin

html5新增表單控制元件屬性

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti

MFC在VS2010為ActiveX控制元件新增屬性

ActiveX控制元件有四種屬性: (1)Stock:為每個控制元件提供的標準屬性,如字型或顏色。 (2)Ambient:圍繞控制元件的環境屬性——已被置入容器的屬性。這些屬性不能被更改,但控制元件可以使用它們調整自己的屬性。 (3)Extended:這些是由容器處

HTMLposition的五種屬性

ati 瀏覽器 pos 正常 posit 就是 osi 內聯 排列 一、默認定位static: position的默認值,一般不設置position屬性時,會按照正常的文檔流進行排列。 二、相對定位relative: 1、relative 就是相對元素static定位時的位

C#Form.SplitContainer清除控制元件textbox值(窗體.容器.控制元件

文章目錄 問題背景 問題程式碼 問題解決 正確清除程式碼 問題延申 問題背景 早上在完善不確定度計算器時,想要清空實驗資料輸入時所有textbox控制元件值。 問題程式碼

[Swift]ViewControllerxib控制元件為空

在ViewController的xib中定義了一些控制元件,然後在使用的時候會因為這個控制元件為空而崩潰,報錯為: Swift Error fatal error: unexpectedly found nil while unwrapping an Optional value