통신 Javascript 를 사용하여 Binary File 읽기

황제낙엽 2010.09.29 12:53 조회 수 : 500 추천:55

sitelink1 http://nagoon97.wordpress.com/2008/04/06...sing-ajax/ 
sitelink2 http://www.heypage.com/nagoon97/BinFileR..._demo.html 
sitelink3  
sitelink4 http://okjungsoo.tistory.com/7953804 
extra_vars4  
extra_vars5  
extra_vars6  

nagoon97님의 Reading binary files using Ajax 포스트에서는 Ajax를 이용하여 바이너리 파일에 접근하는 방법을 소개하고 있습니다. 

  1. function BinFileReader(fileURL) {...} 을 호출합니다.
  2. 내부 변수들을 초기화 작업을 수행합니다.
  3. Browser의 userAgent를 체크하여서 IE인 경우에는 BinFileReaderImpl_IE를 호출하고 그 외의 경우에는 BinFileReaderImpl을 호출합니다.
  4. function BinFileReaderImpl(fileURL) {...} 에서는
    1. XMLHttpRequest를 생성한 다음에 mime type을 'text/plain; charset=x-user-defined' 설정한 다음에 file을 요청합니다.
      req.overrideMimeType('text/plain; charset=x-user-defined');

    2. 성공적으로 로딩한 다음에는 fileContents에 responseText를 저장하고
    3. fileSize를 responseText.length를 저장합니다.
    4. 이 때 readByteAt(index) 메소드를 생성하는데 charCodeAt(index) & 0xff 값을 리턴합니다.

  5. function BinFileReaderImpl_IE(fileURL) {...}에서는 (VB코드로 구현)
    1. VB 코드를 사용하여 XMLHttp Request를 생성한 다음에
    2. 헤더에 "Accept-Charset", "x-user-defined"로 설정한 후 file을 요청합니다.
    3. file 로딩이 완료된 다음에는 responseBody를 통하여 byteArray를 얻어옵니다.
    4. 이 byteArray를 Array()로 변환한 다음에 fileSize를 생성 및 readByteAt()를 생성합니다.
내부에는 filePointer (private)변수를 가지고 있어서 readString()을 호출하여 읽어들이는 경우 해당하는 읽어들이는 위치로 파일 포인터(위에서 얻어온 Array 또는 String에 접근하기 위한 index)를 변경 시킨 다음에 읽어들이게 됩니다.

제공되는 API는 다음과 같습니다.
  1. getFileSize() : 파일크기를 리턴
  2. getFilePointer() : 파일을 읽어들일 위치를 지정하는 내부 포인터의 값
  3. movePointerTo(iTo) : 포인터 위치 이동 (0 이상 fileSize 아래의 값으로 제한을 주는 것 외에는 값만 변경)
  4. movePointer(iDirection) : 읽어들이는 방향의 변경
  5. 그 외에 readNumber, readString, readUnicodeString을 사용하여 파일을 읽기 위해서 사용되는 메소드 제공
제공되는 예제에 BMP 파일의 헤더를 직접 읽어들여서 width/height/bits per pixel 값과 fileSize를 읽어들이는 것을 보실 수도 있습니다.
번호 제목 글쓴이 날짜 조회 수
27 [JavaScript Tutorials] Handling runtime errors in JavaScript using try/catch/finally (해석중) 황제낙엽 2009.04.08 2784
26 연속해서 스트림 받기 (flush data from servlet to jsp with ajax) 황제낙엽 2013.01.04 2428
25 외부 라이브러리 (.js) 의 바람직하지 않은 동적 로딩 (eval함수 이용) 황제낙엽 2012.01.18 1851
24 CORS(Cross-Origin Resource Sharing) - 4 file 황제낙엽 2017.03.07 880
23 Javascript CORS/XSS 극복하는(피하는) 방법 file 황제낙엽 2017.07.31 648
» Javascript 를 사용하여 Binary File 읽기 황제낙엽 2010.09.29 500
21 XMLHttpRequest 의 이벤트 onreadystatechange 황제낙엽 2012.05.30 412
20 진행 상황 추적하기(XMLHttpRequest.readyState) file 황제낙엽 2012.05.23 324
19 CORS(Cross-Origin Resource Sharing) - 5 file 황제낙엽 2017.03.07 261
18 XMLHttpRequest.timeout 황제낙엽 2018.11.03 248
17 두 서버의 자원을 접근하는 클라이언트 프레임웍(Next.js)에서의 CORS오류 file 황제낙엽 2021.12.05 231
16 CORS 의 내용과 이에 대한 우회 방안들 file 황제낙엽 2021.12.05 139
15 CORS(Cross-Origin Resource Sharing) - 1 file 황제낙엽 2017.03.07 135
14 HTTP 접근 제어 (CORS) 황제낙엽 2017.05.29 125
13 Ajax (XMLHttpRequest) 샘플 황제낙엽 2017.08.01 93
12 XMLHttpRequest.setRequestHeader 황제낙엽 2013.09.30 62
11 XMLHttpRequest 제대로 활용하기 file 황제낙엽 2017.08.01 58
10 CORS(Cross-Origin Resource Sharing) - 3 file 황제낙엽 2017.03.07 45
9 [펌] TAEYO.NET - JavaScript OOP 스트레칭 황제낙엽 2009.04.02 27
8 Fetch API (CORS 극복을 위한 노력) 황제낙엽 2021.12.05 26