업로드 페이지에 항상 <input type=file>을 이용했는데..
어제 iE8로 업그레이드하고 난 후부터, 파일을 찾을 수 없다하여.. 확인해보니.. 잰장
지멋데로 IE8이 경로를 바꿔버린다.
네이버씨에게 물어봤더니 아래와 같이 알려주더라. 이젠 어쩌란 말인가?
헉~
IE8 정식버전에서 변경된 점 몇가지.
1. <input type=file>
<input type=file> 에서 javascript-x로 value 값을 얻어오지 못함. 이는 파일의 경로에 사용자의 이름이나 profile 등의 정보가 포함되어 있을수 있어 보안상의 문제로 얻어올 수 없게 함.
단, [ 보안설정 > 인터넷 영역 > 파일을 서버에 업로드할 때 로컬 디렉터리 경로 포함 ] 옵션이 '사용'으로 선택된 경우는 이전과 같이 동작. 따라서 기본적으로는 js로 파일의 value를 얻어올시 단순하게 파일명만을 얻어오게 됨. (RC1 버전까진)
하지만 파일명만을 얻어오게 되면 기존 js 스크립트에서 <input type=file>에서 얻어온 value를 파싱 할때 \를 이용해 파일명 등을 구분해 사용하던 기존 스크립트는 에러를 발생하게 되기 때문에, 이에 대한 호환성을 유지하기 위해 [ C:\fakepath\파일명.확장자 ] 형태로 value 값이 넘어오도록 정식버전에선 RC1과 다르게 변경됨.
즉, 실제 파일이 C가 아닌 D드라이브에 있다고 하더라도 return 되는 값은 C:\fakepath\...로 넘어오게 되는데, 실제 서버에 전송될때에는 이 형태가 전송되는 것은 아니다. 이것은 단지 기존 스크립트와의 호환성을 위해 MS에서 파일명앞에 추가되도록 한 것일 뿐이다.
Opera 10 alpha 버전에서는 C:\fake_path\ 와 같은 형태로 적용되어 있으나, IE에서는 폴더명에 특별문자가 포함되는 것을 원하지 않았고, 또한 폴더명이 8글자 내외로 처리되길 원했기 때문에 underscore를 빼고 설정.
값을 얻어오는 것도 안되지만, 할당하는 것도 안된다. 즉, js로 file control value 값을 얻거나 할당하지 못하기 때문에 사용자가 file을 선택한 형태로만 작업을 처리해야 한다.
추가 (3/26) :
2. IE7과의 호환성 향상을 위해 RC1과 달라진 점
IE7 standard mode에선 아래의 기능들에 대한 사용이 제한됨.
a. JSON object hidden
b. [DOM object].toString() 은 다시 원복되어, IE7과 같이 [object]만 return
c. object.defineProperty/object.getOwnPropertyDescript-xor API hidden
+ 참고 link :