본문 바로가기
Programming/Tips(C++,C#)

ActiveX에서.. 특정 이미지를 로컬PC에 저장후 img src로 그 파일을 보여줄때..

by 곰네Zip 2012. 1. 17.

도저히 이미지 파일이 보여지지 않았다.. ㅡㅡ;;; 왜 안보여지나 안보여지나..
근데 특이한 사항은.. 아래와 같음

사용된 태그는 아래와 같더라..

<img src=<%=activeX에서 저장한 로컬경로%> ... >

Windows 7 + IE8 (or IE9) 정상적으로 팝업창에서 해당 이미지가 잘 보여짐 
Windows XP + IE8 : 뭔짓을 해도 안나옴.

그래서 정황상.. 분명 저장 경로가 문제가 있을 것이다 판단...
본사 돌아와서 소스분석 시작..
GetTempPath로 임시로 저장할 경로를 가져오는데.. 여기서 경로가 좀 이상하게 저장되고 있었다.

이리저리 뒤져보다.. 추정가능한 원인을 찾음 
1. IE7 이상부터는 로컬 리소스에 접근이 불가함.
  => 근데 그렇다면.. 오히려 XP보다 7에서 안보이는게 정상 아닌가 싶음.
  => 그리고 어차피 웹에 있는 이미지, html등 파일을 다운받은 후에 보여지는 것인데?

여튼.. Windows7에서는 잘 보이니까 더 비교하기가 어려웠었다. -_-;

그러다 찾아낸 함수가..

::SHGetFolderPath(NULL,CSIDL_INTERNET_CACHE,NULL,0,szDir);

이놈이다.. 나의 오늘의 구세주(?)였을까? 우선.. szDir은 내가 선언한 변수다. 경로를 얻어올..
CSIDL값.. 이놈이 여러가지가 있는데.. 바로!! CSIDL_INTERNET_CACHE를 사용해야.. 해결 가능했다. 다른 TEMP는 로컬 리소스 접근 불가에 따른거라 그런지 아주 잘 막혀주더라 ㅡㅡ;;;;
 이걸 몰라서 몇시간을 삽질했으니 원.. ㅡㅡ;;;
 윈도 7은 GetTempPath로도 잘 경로를 가져와 줘서.. OS버전 찾아서 분기처리 해 놓았다..
(어차피 SHGetFolderPath를 사용하려고 해도 윈도 XP이하 버전과 윈도 XP 초과버전(이후 버전)은 사용하는 방법이 다르더라;;;)

 여튼.. 정말 포크레인을 몰고다닌 하루..
 
반응형

댓글