2012-01-05 2 views
0

을 사용하여 이미지를 표시하는 방법 file:// protocol을 사용하여 Google 크롬에 이미지를 표시 할 수없는 것 같습니다.file : // 프로토콜을 피하고 http : //

나는 file://my-network-computer/my-folder/my-file.jpg과 같은 원격 네트워크에서 파일을로드하고 asp.net 페이지의 이미지로 렌더링하는 것이 좋을 것이라고 생각합니다.

네트워크 드라이브의 파일에서 바이트를로드 한 다음 해당 컨텐츠를 asp.net 페이지의 이미지로 렌더링 할 수 있습니까?

+0

그냥 명확히 : 그것은 단지 크롬이 아니다 그것은 그렇게하지 않을 것입니다. 소금에 걸린 모든 브라우저가 그걸 막아야합니다. – NotMe

답변

1

네, 가능합니다.

바이트를 base64 문자열로 변환하고 이미지 src를 base64 문자열로 설정할 수 있습니다.

예 :

<img src="data:image/gif;base64,R0lGODlhDwAPAKECAAAAzMzM///// 
wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4ML 
wWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw==" 
alt="Base64 encoded image" width="150" height="150"/> 

그리고 당신은 base64로 문자열 바이트로 변환하는 방법은 다음과 같습니다

base64String = System.Convert.ToBase64String(binaryData, 
          0, 
          binaryData.Length); 
+0

큰 이미지의 경우 작동합니다. 몇 킬로 바이트 후 URL 길이 제한에 도달하지 않습니까? – CodesInChaos

+0

@CodeInChaos 몇 가지 제한 사항이 있습니다.이 위키 피 디아 문서 (http://en.wikipedia.org/wiki/Data_URI_scheme)는 매우 철저한 설명이 있습니다. – Icarus

2

당신은 그것의 UNC 경로를 사용하여 네트워크에서 파일을 여는 핸들러를 쓸 수 및 Response.WriteFile :

을 사용하여 응답 내용에 내용을 씁니다. 핸들러 URL로 이미지 src을 설정

<asp:Image runat="server" ImageUrl="~/NetworkImageHandler.ashx?file=file.jpg" /> 

누군가가 네트워크에 그냥 파일을 열 수 있도록 해주는 핸들러를 작성하지 않는 입력 확인에 대한 매우 엄격합니다. 단일 폴더에 대한 액세스를 제한하고 해당 폴더에 대한 작업자 프로세스 액세스 만 허용하고 유효한 파일 확장명 (예 : jpg, jpeg, png, gif)을 확인하십시오.

이것은 매우 간단한 예이며 테스트하지 않고 프로덕션 환경에서는 사용하지 마십시오. 응답, 그리고 더 많은 예제 코드에 대한 컨텐츠를 작성하는 다른 방법에 대한

, 참조 :