SlideShare a Scribd company logo
1 of 31
Download to read offline
background : http://goo.gl/J1GgP1
명세부터 깨우치는
FILEAPI
FILEAPI
INTERFACE
File
Reader
File
Blob
FileList 편집자 초안이 작성되었고 최신 버전은 2013년 9월 12일에 작성
파일의 정보나 내용을 가져올 수 있고 이를 서버로 전송할 수 있다.
이 API를 이용하면 자바스크립트에서 로컬 파일에 액세스 가능하고
되었으며 표준화 제정 단계는 Working Draft다.
File API는 파일 개체를 표현하기 위한 API이다. 2006년도에
File
Writer
File
System
File API는 로컬 파일에 액세스만 가능한 API다. 따라서 파일을 생성하거나
쓰고싶다면 File Writer API의 사양을, 디렉터리를 생성하거나 삭제하는 등
파일 시스템 작업을 하고 싶다면 File System API의 사양을 살펴
봐야한다
하지만 아쉽게도 File API는 대부분의 브라우저에서 지원하지만
File Writer와 File System은 대부분 지원하지 않는다
File
ReaderFileBlob FileList
BLOB
INTERFACE
Properties
Method
size : long
Blob 객체에 포함된 데이터의 용량
바이트로 표시되며 읽기 전용이다. 	
  
type : DOMString
Blob객체에 포함된 데이터의 MIME 타입을 ASCII 인코딩 한
문자열. 모두 소문자다. MIME 종류를 알 수없는 경우는 비어있다.	
  
slice(Start : long, end : long, contentType : DOMString)
=> Blob
지정한 범위 만큼의 바이트를 가진 새로운 Blob 개체를 반환
한다.	
  
close(void)
=> void
영구적으로 Blob 객체를 다시 사용할 수 없는 상태로 만든다.	
  
Blob은 Binary large object의
약자로 이진 데이터(이미지와
음성 그리고 기타 멀티미디어
파일 등)를 만들거나 객체로
조작 하기 위해 사용하는 형식
으로 보통 커다란 파일을 의미
한다.
BLOB
INTERFACE
Properties
Method
size : long
Blob 객체에 포함된 데이터의 용량
바이트로 표시되며 읽기 전용이다. 	
  
type : DOMString
Blob 객체에 포함된 데이터의 용량
바이트로 표시되며 읽기 전용이다. 	
  
slice(Start : long, end : long, contentType : DOMString)
=> Blob
지정한 범위 만큼의 바이트를 가진 새로운 Blob 개체를 반환
한다.	
  
close(void)
=> void
영구적으로 Blob 객체를 다시 사용할 수 없는 상태로 만든다.	
  
Blob은 Binary large object의
약자로 이진 데이터(이미지와
음성 그리고 기타 멀티미디어
파일 등)를 만들거나 객체로
조작 하기 위해 사용하는 형식
으로 보통 커다란 파일을 의미
한다.
Example
var aFileParts = ['<a id="a"><b id="b">hey!</b></a>’], 	
oMyBlob = new Blob(aFileParts, {type : 'text/html'});	
 
 
FILE
INTERFACE
File는 Blob를 상속받아 몇 가지
프로퍼티를 추가한 객체다.
Chain
Properties
lastModifiedDate : Date
파일을 마지막으로 수정한 날짜를 나타낸다.	
  
name : string
파일의 이름을 나타낸다.
Properties
Method
length : number
File 객체의 갯수를 읽기 전용 값으로 나타낸다.
Item(index : long)
=> File?
index에 해당하는 File 객체를 반환한다. 존재하지 않으면
null을 반환한다.	
  Input 태그로 접근할 수 있는 files
프로퍼티는 FileList Interface로
구현되어 있으며 이는 1개의
프로퍼티와 1개의 메소드로 이루어져
있다.
FILELIST
INTERFACE
Properties
Method
length : number
File 객체의 갯수를 읽기 전용 값으로 나타낸다.
Item(index : long)
=> File?
index에 해당하는 File 객체를 반환한다. 존재하지 않으면
null을 반환한다.	
  Input 태그로 접근할 수 있는 files
프로퍼티는 FileList Interface로
구현되어 있으며 이는 1개의
프로퍼티와 1개의 메소드로 이루어져
있다.
FILELIST
INTERFACEExample
<input type="file">	
  	
<script>	
    var inputFile = document.getElementsByTagName('input')[0],	
        file = inputFile.item(0); // 없다면 null	
	
    var inputFile = document.getElementsByTagName('input')[0],	
        file = inputFile[0]; // 없다면 undefined 	
</script>  
Properties
Error
FILE
INTERFACE
READER
File 객체나 Blob 객체의 내용을 읽기
위한 속성을 정의하고 있다. 제공
하는 API는 비동기다.
error : DOMError?
파일 읽기 실패 시 발생한 오류의 타입을 나타낸다.
readyState : short
파일 읽기 처리 상태를 나타낸다.
result : (DOMString|Arraybuffer)?
읽기 결과가 저장된다. 파일 읽기 동작이 완료되면 이 속성을
사용할 수 있다.
error.NOT_FOUND_ERR : 1
파일을 찾을 수 없음
error.SECURITY_ERR : 2
보안 에러
error.ABORT_ERR : 3
파일 읽기 중지(abort 사용 등)
error.NOT_READABLE_ERR : 4
파일 읽기 권한 없음
error.ENCODING_ERR : 5
DataURL의 크기 제한 초과
State
FileReader.EMPTY : 0
파일 읽기 전
FileReader.LOADING : 1
파일 읽기 중
FileReader.DONE : 2
파일 읽기 완료
Method
FILE
INTERFACE
READER
File 객체나 Blob 객체의 내용을 읽기
위한 속성을 정의하고 있다. 제공
하는 API는 비동기다.
readAsArrayBuffer(blob : Blob)
=> void
ArrayBuffer 형식으로 파일을 읽는다.
readAsText(blob : Blob [, encoding])
=> void
텍스트 형식으로 파일을 읽는다.
readAsDataURL(blob Blob)
=> void
DataURL 형식으로 파일을 읽는다.
abort(void)
=> void
파일 읽기를 중지한다.
Event
onloadstart
onprogress
onload
onerror
onabort
onloadend
읽기를 시작할 때 발생하는 이벤트
읽는 중 정기적으로 발생하는 이벤트
읽기에 성공했을 때 발생하는 이벤트
읽기에 실패했을 때 발생하는 이벤트
읽기를 중지했을 대 발생하는 이벤트
읽기가 완료됐을 때 발생하는 이벤트
(성공/실패 여부와 상관없이 발생)
Method
FILE
INTERFACE
READER
File 객체나 Blob 객체의 내용을 읽기
위한 속성을 정의하고 있다. 제공
하는 API는 비동기다.
readAsArrayBuffer(blob : Blob)
=> void
ArrayBuffer 형식으로 파일을 읽는다.
readAsText(blob : Blob [, encoding]
=> void
텍스트 형식으로 파일을 읽는다.
readAsDataURL(blob Blob)
=> void
DataURL 형식으로 파일을 읽는다.
abort(void)
=> void
파일 읽기를 중지한다.
Error
onloadstart
onprogress
onload
onerror
onabort
onloadend
읽기를 시작할 때 발생하는 이벤트
읽는 중 정기적으로 발생하는 이벤트
읽기에 성공했을 때 발생하는 이벤트
읽기에 실패했을 때 발생하는 이벤트
읽기를 중지했을 대 발생하는 이벤트
읽기가 완료됐을 때 발생하는 이벤트
(성공/실패 여부와 상관없이 발생)
Example
var input = document.getElementById(‘file’),	
file = input.files.item(0),	
reader = new FileReader();	
	
reader.readAsDataURL(file); 	
	
reader.onload = function(event){	
console.log(reader.result); //data:image/npm;base64,iVBORw0...	
};  
Method
FILE
INTERFACE
READER
FileReader는 비동기적으로 File을
읽지만 FileReaderSync는 동기적으로
읽는다. 비동기적인 방법은 이벤트
핸들러를 사용해야하지만 동기적인
방법은 그럴 필요가 없으므로 구현이
단순해진다. FileReaderSync는
WebWorkers 환경에서만 사용할 수
있다.
readAsArrayBuffer(blob : Blob)
=> void
ArrayBuffer 형식으로 파일을 읽는다.
readAsText(blob : Blob [, encoding]
=> void
텍스트 형식으로 파일을 읽는다.
readAsDataURL(blob Blob)
=> void
DataURL 형식으로 파일을 읽는다.
SYNC
Method
FILE
INTERFACE
READER
FileReader는 비동기적으로 File을
읽지만 FileReaderSync는 동기적으로
읽는다. 비동기적인 방법은 이벤트
핸들러를 사용해야하지만 동기적인
방법은 그럴 필요가 없으므로 구현이
단순해진다. FileReaderSync는
WebWorkers 환경에서만 사용할 수
있다.
readAsArrayBuffer(blob : Blob)
=> void
ArrayBuffer 형식으로 파일을 읽는다.
readAsText(blob : Blob [, encoding]
=> void
텍스트 형식으로 파일을 읽는다.
readAsDataURL(blob Blob)
=> void
DataURL 형식으로 파일을 읽는다.
SYNC
Example
// worker.js 	
self.addEventListener('message', function(e){	
   var files = e.data,	
        buffers = [];	
	
[].forEach.call(files, function(file){	
       var reader = new FileReaderSync(),	
            buffer = reader.readAsArrayBuffer(file);	
	
       buffers.push(buffer);	
    });	
	
    postMessage(buffers);	
}, false);  
Method
FILE
INTERFACE
READER
FileReader는 비동기적으로 File을
읽지만 FileReaderSync는 동기적으로
읽는다. 비동기적인 방법은 이벤트
핸들러를 사용해야하지만 동기적인
방법은 그럴 필요가 없으므로 구현이
단순해진다. FileReaderSync는
WebWorkers 환경에서만 사용할 수
있다.
readAsArrayBuffer(blob : Blob)
=> void
ArrayBuffer 형식으로 파일을 읽는다.
readAsText(blob : Blob [, encoding]
=> void
텍스트 형식으로 파일을 읽는다.
readAsDataURL(blob Blob)
=> void
DataURL 형식으로 파일을 읽는다.
SYNC
Example
// app.js 	
var worker = new Worker('worker.js');	
	
worker.onmessage = function(e){	
   // e.data should be an array of ArrayBuffers.	
};	
	
worker.onerror = function(e){	
   // e.lineno	
// e.filename	
// e.message	
};  
background : http://goo.gl/ptr6dL
FILEAPIDEMO
이미지
파일
업로드
텍스트
파일
만들기
background : http://goo.gl/ptr6dL
FILEAPIDEMO
이미지
파일
업로드
텍스트
파일
만들기
Example
https://github.com/UYEONG/FileUploaderDemo
background : http://goo.gl/5eW3he
CAN I
USE
BLOB
icon : http://goo.gl/TQfYy1
data : http://caniuse.com/blobbuilder
8 ~
6 ~
6 ~
10 ~
3 ~
6 ~
icon : http://goo.gl/TQfYy1
data : http://caniuse.com/fileapi
6 ~
3.6 ~
5.1 ~
10 ~
3 ~
5.1 ~
FILE
icon : http://goo.gl/TQfYy1
data : http://caniuse.com/filereader
6 ~
3.6 ~
6 ~
10 ~
3 ~
6 ~
FILE
READER
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
30.0
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
30.0
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
7
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
10/11
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
Android
2.x
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
Android
4.x
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
IOS 6
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
icon : http://goo.gl/TQfYy1
test : http://goo.gl/STfHCS
FileList
FileList
FileList.item()
FileList.length
Blob
Blob
Blob.size
Blob.type
Blob.slice()
Blob.close()
File
File
File.name
File.lastModifiedDate
FileReader
FileReader
FileReader.readAsArrayBuffer()
FileReader.readAsText()
FileReader.readAsDataUrl()
FileReader.abort()
async read methods
FileReader.EMPTY
FileReader.LOADING
FileReader.DONE
FileReader.readyState
states
FileReader.result
FileReader.error
file or Blob data
FileReader.onloadstart
FileReader.onprogress
FileReader.onload
FileReader.onabort
FileReader.onerror
FileReader.onloadend
event handler attributes
IOS 7
명 세
W3C FileAPI 최신 사양 : www.w3.org/TR/FileAPI/
W3C FileAPI 편집자 초안 : dev.w3.org/2006/webapi/FileAPI/
W3C FileWriterAPI : www.w3.org/TR/file-writer-api/
W3C FileSystemAPI : www.w3.org/TR/file-system-api/
W3C Blob Interface : www.w3.org/TR/FileAPI/#constructorBlob
W3C File interface : www.w3.org/TR/FileAPI/#file-constructor
W3C FileList Interface : www.w3.org/TR/FileAPI/#filelist-section
W3C FileReader Interface : www.w3.org/TR/FileAPI/#FileReader-interface=
MDN&MSDN
MDN Blob : developer.mozilla.org/en-US/docs/Web/API/Blob
MDN File : developer.mozilla.org/en-US/docs/Web/API/File
MDN FileList : developer.mozilla.org/en-US/docs/Web/API/FileList
MDN FileReader : developer.mozilla.org/en-US/docs/Web/API/FileReader
MSDN FileList : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453213.aspx
MSDN File : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453204.aspx
MSDN Blob : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453178.aspx
MSDN FileReader : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453225.aspx
caniuse
FileAPI : http://caniuse.com/filesystem
FileSystem : http://caniuse.com/filesystem
Blob constructor : http://caniuse.com/blobbuilder
FileReader : http://caniuse.com/filereader
  	
  
Thank you

More Related Content

Viewers also liked

9주 dom & event advanced
9주  dom & event advanced9주  dom & event advanced
9주 dom & event advanced지수 윤
 
JavaScript OOP Pattern
JavaScript OOP PatternJavaScript OOP Pattern
JavaScript OOP Pattern지수 윤
 
자바스크립트 핵심 가이드
자바스크립트 핵심 가이드자바스크립트 핵심 가이드
자바스크립트 핵심 가이드재원 변
 
9주 DOM & Event Advanced
9주  DOM & Event Advanced9주  DOM & Event Advanced
9주 DOM & Event Advanced지수 윤
 
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'재원 변
 
재사용가능한 서비스코드제작
재사용가능한 서비스코드제작재사용가능한 서비스코드제작
재사용가능한 서비스코드제작지수 윤
 
5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹지수 윤
 
앱밤_시간표
앱밤_시간표앱밤_시간표
앱밤_시간표재원 변
 
WEBUI Advanced중간시험
WEBUI Advanced중간시험WEBUI Advanced중간시험
WEBUI Advanced중간시험지수 윤
 
퍼블리셔, 디자인을 퍼블리싱하다
퍼블리셔, 디자인을 퍼블리싱하다퍼블리셔, 디자인을 퍼블리싱하다
퍼블리셔, 디자인을 퍼블리싱하다jeong seok yang
 
7주 JavaScript 실습
7주 JavaScript 실습7주 JavaScript 실습
7주 JavaScript 실습지수 윤
 
JS특징(scope,this,closure)
JS특징(scope,this,closure)JS특징(scope,this,closure)
JS특징(scope,this,closure)지수 윤
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초진수 정
 
비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료지수 윤
 
Javascript Closure
Javascript ClosureJavascript Closure
Javascript Closure지수 윤
 
크로스브라우징
크로스브라우징크로스브라우징
크로스브라우징지수 윤
 
웹프로그래밍 트랙소개
웹프로그래밍 트랙소개웹프로그래밍 트랙소개
웹프로그래밍 트랙소개지수 윤
 
JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)지수 윤
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout지수 윤
 
The LESS 기초 : The Dynamic Styleshee Language Basic
The LESS 기초 : The Dynamic Styleshee Language BasicThe LESS 기초 : The Dynamic Styleshee Language Basic
The LESS 기초 : The Dynamic Styleshee Language Basicjeong seok yang
 

Viewers also liked (20)

9주 dom & event advanced
9주  dom & event advanced9주  dom & event advanced
9주 dom & event advanced
 
JavaScript OOP Pattern
JavaScript OOP PatternJavaScript OOP Pattern
JavaScript OOP Pattern
 
자바스크립트 핵심 가이드
자바스크립트 핵심 가이드자바스크립트 핵심 가이드
자바스크립트 핵심 가이드
 
9주 DOM & Event Advanced
9주  DOM & Event Advanced9주  DOM & Event Advanced
9주 DOM & Event Advanced
 
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'
160716 클리어보스 발표자료 '내 인생의 첫 번째 스타트업'
 
재사용가능한 서비스코드제작
재사용가능한 서비스코드제작재사용가능한 서비스코드제작
재사용가능한 서비스코드제작
 
5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹5주 모바일웹과 반응형웹
5주 모바일웹과 반응형웹
 
앱밤_시간표
앱밤_시간표앱밤_시간표
앱밤_시간표
 
WEBUI Advanced중간시험
WEBUI Advanced중간시험WEBUI Advanced중간시험
WEBUI Advanced중간시험
 
퍼블리셔, 디자인을 퍼블리싱하다
퍼블리셔, 디자인을 퍼블리싱하다퍼블리셔, 디자인을 퍼블리싱하다
퍼블리셔, 디자인을 퍼블리싱하다
 
7주 JavaScript 실습
7주 JavaScript 실습7주 JavaScript 실습
7주 JavaScript 실습
 
JS특징(scope,this,closure)
JS특징(scope,this,closure)JS특징(scope,this,closure)
JS특징(scope,this,closure)
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료비동기와 이벤트큐 수업자료
비동기와 이벤트큐 수업자료
 
Javascript Closure
Javascript ClosureJavascript Closure
Javascript Closure
 
크로스브라우징
크로스브라우징크로스브라우징
크로스브라우징
 
웹프로그래밍 트랙소개
웹프로그래밍 트랙소개웹프로그래밍 트랙소개
웹프로그래밍 트랙소개
 
JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)JavaScript Debugging (수업자료)
JavaScript Debugging (수업자료)
 
4주 CSS Layout
4주 CSS Layout4주 CSS Layout
4주 CSS Layout
 
The LESS 기초 : The Dynamic Styleshee Language Basic
The LESS 기초 : The Dynamic Styleshee Language BasicThe LESS 기초 : The Dynamic Styleshee Language Basic
The LESS 기초 : The Dynamic Styleshee Language Basic
 

Similar to 명세부터 깨우치는 FILEAPI

Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage승빈이네 공작소
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10hungrok
 
Chapter 17
Chapter 17Chapter 17
Chapter 17nacheon
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5현웅 김
 
웹데이터베이스 01주차-강의 개요
웹데이터베이스 01주차-강의 개요웹데이터베이스 01주차-강의 개요
웹데이터베이스 01주차-강의 개요Yoonwhan Lee
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기Yong Joon Moon
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core Ji-Woong Choi
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 SeongHyun Ahn
 
드롭박스 Vs. 구글드라이브 상세 비교
드롭박스 Vs. 구글드라이브 상세 비교드롭박스 Vs. 구글드라이브 상세 비교
드롭박스 Vs. 구글드라이브 상세 비교CharlyChoi
 
드롭박스 Vs. 구글드라이브
드롭박스 Vs. 구글드라이브드롭박스 Vs. 구글드라이브
드롭박스 Vs. 구글드라이브Charly Choi
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)YoungSu Son
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호Jiho Lee
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공PartPrime
 
10 동기및비동기장치io
10 동기및비동기장치io10 동기및비동기장치io
10 동기및비동기장치iossuser3fb17c
 
웹표준스터디4주차 이미진
웹표준스터디4주차 이미진웹표준스터디4주차 이미진
웹표준스터디4주차 이미진Mijin Lee
 

Similar to 명세부터 깨우치는 FILEAPI (20)

Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
 
Web server page_ed10
Web server page_ed10Web server page_ed10
Web server page_ed10
 
Chapter 17
Chapter 17Chapter 17
Chapter 17
 
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
Part14 %ed%8 c%8c%ec%9d%bc%ec%9e%85%ec%b6%9c%eb%a0%a5
 
웹데이터베이스 01주차-강의 개요
웹데이터베이스 01주차-강의 개요웹데이터베이스 01주차-강의 개요
웹데이터베이스 01주차-강의 개요
 
파이썬 파일처리 이해하기
파이썬 파일처리 이해하기파이썬 파일처리 이해하기
파이썬 파일처리 이해하기
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
System+os study 4
System+os study 4System+os study 4
System+os study 4
 
파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리 파이썬 파일처리 및 문자열 처리
파이썬 파일처리 및 문자열 처리
 
드롭박스 Vs. 구글드라이브 상세 비교
드롭박스 Vs. 구글드라이브 상세 비교드롭박스 Vs. 구글드라이브 상세 비교
드롭박스 Vs. 구글드라이브 상세 비교
 
드롭박스 Vs. 구글드라이브
드롭박스 Vs. 구글드라이브드롭박스 Vs. 구글드라이브
드롭박스 Vs. 구글드라이브
 
Git
Git Git
Git
 
Endnote x5(@postech)
Endnote x5(@postech)Endnote x5(@postech)
Endnote x5(@postech)
 
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
[NEXT] Android 개발 경험 프로젝트 4일차 (Networking)
 
파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호파이콘 2017 그만퇴근합시다_이지호
파이콘 2017 그만퇴근합시다_이지호
 
Endnote X4 @ postech
Endnote X4 @ postechEndnote X4 @ postech
Endnote X4 @ postech
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공
 
10 동기및비동기장치io
10 동기및비동기장치io10 동기및비동기장치io
10 동기및비동기장치io
 
Cp2 w5
Cp2 w5Cp2 w5
Cp2 w5
 
웹표준스터디4주차 이미진
웹표준스터디4주차 이미진웹표준스터디4주차 이미진
웹표준스터디4주차 이미진
 

More from 우영 주

스트리밍과 디지털 권리 관리
스트리밍과 디지털 권리 관리스트리밍과 디지털 권리 관리
스트리밍과 디지털 권리 관리우영 주
 
스트리밍과 플레이어
스트리밍과 플레이어스트리밍과 플레이어
스트리밍과 플레이어우영 주
 
프런트엔드개발, 지금과 다음
프런트엔드개발, 지금과 다음프런트엔드개발, 지금과 다음
프런트엔드개발, 지금과 다음우영 주
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기우영 주
 
아재가 젊은이에게 사랑받는 마크업을 하는 방법
아재가 젊은이에게 사랑받는 마크업을 하는 방법아재가 젊은이에게 사랑받는 마크업을 하는 방법
아재가 젊은이에게 사랑받는 마크업을 하는 방법우영 주
 
Introduce Guetzli
Introduce GuetzliIntroduce Guetzli
Introduce Guetzli우영 주
 
스코프와 실행문맥
스코프와 실행문맥스코프와 실행문맥
스코프와 실행문맥우영 주
 
좋은 기능을 만드는 방법
좋은 기능을 만드는 방법좋은 기능을 만드는 방법
좋은 기능을 만드는 방법우영 주
 
서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법우영 주
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!우영 주
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기우영 주
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js우영 주
 
HTML5 BOILERPLATE를 소개합니다.
HTML5 BOILERPLATE를 소개합니다.HTML5 BOILERPLATE를 소개합니다.
HTML5 BOILERPLATE를 소개합니다.우영 주
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기우영 주
 

More from 우영 주 (15)

스트리밍과 디지털 권리 관리
스트리밍과 디지털 권리 관리스트리밍과 디지털 권리 관리
스트리밍과 디지털 권리 관리
 
스트리밍과 플레이어
스트리밍과 플레이어스트리밍과 플레이어
스트리밍과 플레이어
 
프런트엔드개발, 지금과 다음
프런트엔드개발, 지금과 다음프런트엔드개발, 지금과 다음
프런트엔드개발, 지금과 다음
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
아재가 젊은이에게 사랑받는 마크업을 하는 방법
아재가 젊은이에게 사랑받는 마크업을 하는 방법아재가 젊은이에게 사랑받는 마크업을 하는 방법
아재가 젊은이에게 사랑받는 마크업을 하는 방법
 
Introduce Guetzli
Introduce GuetzliIntroduce Guetzli
Introduce Guetzli
 
스코프와 실행문맥
스코프와 실행문맥스코프와 실행문맥
스코프와 실행문맥
 
좋은 기능을 만드는 방법
좋은 기능을 만드는 방법좋은 기능을 만드는 방법
좋은 기능을 만드는 방법
 
서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법서비스를 성공적으로 만드는 방법
서비스를 성공적으로 만드는 방법
 
다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!다함께, FluxUtils 한바퀴!
다함께, FluxUtils 한바퀴!
 
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
[Toolcon2014] WebStorm에서 자바스크립트 리팩토링하기
 
Javascript Test Double Sinon.js
Javascript Test Double Sinon.jsJavascript Test Double Sinon.js
Javascript Test Double Sinon.js
 
LESS와 EMMET
LESS와 EMMETLESS와 EMMET
LESS와 EMMET
 
HTML5 BOILERPLATE를 소개합니다.
HTML5 BOILERPLATE를 소개합니다.HTML5 BOILERPLATE를 소개합니다.
HTML5 BOILERPLATE를 소개합니다.
 
이클립스로 GIT 사용하기
이클립스로 GIT 사용하기이클립스로 GIT 사용하기
이클립스로 GIT 사용하기
 

명세부터 깨우치는 FILEAPI

  • 2. FILEAPI INTERFACE File Reader File Blob FileList 편집자 초안이 작성되었고 최신 버전은 2013년 9월 12일에 작성 파일의 정보나 내용을 가져올 수 있고 이를 서버로 전송할 수 있다. 이 API를 이용하면 자바스크립트에서 로컬 파일에 액세스 가능하고 되었으며 표준화 제정 단계는 Working Draft다. File API는 파일 개체를 표현하기 위한 API이다. 2006년도에
  • 3. File Writer File System File API는 로컬 파일에 액세스만 가능한 API다. 따라서 파일을 생성하거나 쓰고싶다면 File Writer API의 사양을, 디렉터리를 생성하거나 삭제하는 등 파일 시스템 작업을 하고 싶다면 File System API의 사양을 살펴 봐야한다 하지만 아쉽게도 File API는 대부분의 브라우저에서 지원하지만 File Writer와 File System은 대부분 지원하지 않는다
  • 5. BLOB INTERFACE Properties Method size : long Blob 객체에 포함된 데이터의 용량 바이트로 표시되며 읽기 전용이다.   type : DOMString Blob객체에 포함된 데이터의 MIME 타입을 ASCII 인코딩 한 문자열. 모두 소문자다. MIME 종류를 알 수없는 경우는 비어있다.   slice(Start : long, end : long, contentType : DOMString) => Blob 지정한 범위 만큼의 바이트를 가진 새로운 Blob 개체를 반환 한다.   close(void) => void 영구적으로 Blob 객체를 다시 사용할 수 없는 상태로 만든다.   Blob은 Binary large object의 약자로 이진 데이터(이미지와 음성 그리고 기타 멀티미디어 파일 등)를 만들거나 객체로 조작 하기 위해 사용하는 형식 으로 보통 커다란 파일을 의미 한다.
  • 6. BLOB INTERFACE Properties Method size : long Blob 객체에 포함된 데이터의 용량 바이트로 표시되며 읽기 전용이다.   type : DOMString Blob 객체에 포함된 데이터의 용량 바이트로 표시되며 읽기 전용이다.   slice(Start : long, end : long, contentType : DOMString) => Blob 지정한 범위 만큼의 바이트를 가진 새로운 Blob 개체를 반환 한다.   close(void) => void 영구적으로 Blob 객체를 다시 사용할 수 없는 상태로 만든다.   Blob은 Binary large object의 약자로 이진 데이터(이미지와 음성 그리고 기타 멀티미디어 파일 등)를 만들거나 객체로 조작 하기 위해 사용하는 형식 으로 보통 커다란 파일을 의미 한다. Example var aFileParts = ['<a id="a"><b id="b">hey!</b></a>’], oMyBlob = new Blob(aFileParts, {type : 'text/html'});  
  • 7. FILE INTERFACE File는 Blob를 상속받아 몇 가지 프로퍼티를 추가한 객체다. Chain Properties lastModifiedDate : Date 파일을 마지막으로 수정한 날짜를 나타낸다.   name : string 파일의 이름을 나타낸다.
  • 8. Properties Method length : number File 객체의 갯수를 읽기 전용 값으로 나타낸다. Item(index : long) => File? index에 해당하는 File 객체를 반환한다. 존재하지 않으면 null을 반환한다.  Input 태그로 접근할 수 있는 files 프로퍼티는 FileList Interface로 구현되어 있으며 이는 1개의 프로퍼티와 1개의 메소드로 이루어져 있다. FILELIST INTERFACE
  • 9. Properties Method length : number File 객체의 갯수를 읽기 전용 값으로 나타낸다. Item(index : long) => File? index에 해당하는 File 객체를 반환한다. 존재하지 않으면 null을 반환한다.  Input 태그로 접근할 수 있는 files 프로퍼티는 FileList Interface로 구현되어 있으며 이는 1개의 프로퍼티와 1개의 메소드로 이루어져 있다. FILELIST INTERFACEExample <input type="file">   <script>     var inputFile = document.getElementsByTagName('input')[0],         file = inputFile.item(0); // 없다면 null     var inputFile = document.getElementsByTagName('input')[0],         file = inputFile[0]; // 없다면 undefined </script>  
  • 10. Properties Error FILE INTERFACE READER File 객체나 Blob 객체의 내용을 읽기 위한 속성을 정의하고 있다. 제공 하는 API는 비동기다. error : DOMError? 파일 읽기 실패 시 발생한 오류의 타입을 나타낸다. readyState : short 파일 읽기 처리 상태를 나타낸다. result : (DOMString|Arraybuffer)? 읽기 결과가 저장된다. 파일 읽기 동작이 완료되면 이 속성을 사용할 수 있다. error.NOT_FOUND_ERR : 1 파일을 찾을 수 없음 error.SECURITY_ERR : 2 보안 에러 error.ABORT_ERR : 3 파일 읽기 중지(abort 사용 등) error.NOT_READABLE_ERR : 4 파일 읽기 권한 없음 error.ENCODING_ERR : 5 DataURL의 크기 제한 초과 State FileReader.EMPTY : 0 파일 읽기 전 FileReader.LOADING : 1 파일 읽기 중 FileReader.DONE : 2 파일 읽기 완료
  • 11. Method FILE INTERFACE READER File 객체나 Blob 객체의 내용을 읽기 위한 속성을 정의하고 있다. 제공 하는 API는 비동기다. readAsArrayBuffer(blob : Blob) => void ArrayBuffer 형식으로 파일을 읽는다. readAsText(blob : Blob [, encoding]) => void 텍스트 형식으로 파일을 읽는다. readAsDataURL(blob Blob) => void DataURL 형식으로 파일을 읽는다. abort(void) => void 파일 읽기를 중지한다. Event onloadstart onprogress onload onerror onabort onloadend 읽기를 시작할 때 발생하는 이벤트 읽는 중 정기적으로 발생하는 이벤트 읽기에 성공했을 때 발생하는 이벤트 읽기에 실패했을 때 발생하는 이벤트 읽기를 중지했을 대 발생하는 이벤트 읽기가 완료됐을 때 발생하는 이벤트 (성공/실패 여부와 상관없이 발생)
  • 12. Method FILE INTERFACE READER File 객체나 Blob 객체의 내용을 읽기 위한 속성을 정의하고 있다. 제공 하는 API는 비동기다. readAsArrayBuffer(blob : Blob) => void ArrayBuffer 형식으로 파일을 읽는다. readAsText(blob : Blob [, encoding] => void 텍스트 형식으로 파일을 읽는다. readAsDataURL(blob Blob) => void DataURL 형식으로 파일을 읽는다. abort(void) => void 파일 읽기를 중지한다. Error onloadstart onprogress onload onerror onabort onloadend 읽기를 시작할 때 발생하는 이벤트 읽는 중 정기적으로 발생하는 이벤트 읽기에 성공했을 때 발생하는 이벤트 읽기에 실패했을 때 발생하는 이벤트 읽기를 중지했을 대 발생하는 이벤트 읽기가 완료됐을 때 발생하는 이벤트 (성공/실패 여부와 상관없이 발생) Example var input = document.getElementById(‘file’), file = input.files.item(0), reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function(event){ console.log(reader.result); //data:image/npm;base64,iVBORw0... };  
  • 13. Method FILE INTERFACE READER FileReader는 비동기적으로 File을 읽지만 FileReaderSync는 동기적으로 읽는다. 비동기적인 방법은 이벤트 핸들러를 사용해야하지만 동기적인 방법은 그럴 필요가 없으므로 구현이 단순해진다. FileReaderSync는 WebWorkers 환경에서만 사용할 수 있다. readAsArrayBuffer(blob : Blob) => void ArrayBuffer 형식으로 파일을 읽는다. readAsText(blob : Blob [, encoding] => void 텍스트 형식으로 파일을 읽는다. readAsDataURL(blob Blob) => void DataURL 형식으로 파일을 읽는다. SYNC
  • 14. Method FILE INTERFACE READER FileReader는 비동기적으로 File을 읽지만 FileReaderSync는 동기적으로 읽는다. 비동기적인 방법은 이벤트 핸들러를 사용해야하지만 동기적인 방법은 그럴 필요가 없으므로 구현이 단순해진다. FileReaderSync는 WebWorkers 환경에서만 사용할 수 있다. readAsArrayBuffer(blob : Blob) => void ArrayBuffer 형식으로 파일을 읽는다. readAsText(blob : Blob [, encoding] => void 텍스트 형식으로 파일을 읽는다. readAsDataURL(blob Blob) => void DataURL 형식으로 파일을 읽는다. SYNC Example // worker.js self.addEventListener('message', function(e){    var files = e.data,         buffers = []; [].forEach.call(files, function(file){        var reader = new FileReaderSync(),             buffer = reader.readAsArrayBuffer(file);        buffers.push(buffer);     });     postMessage(buffers); }, false);  
  • 15. Method FILE INTERFACE READER FileReader는 비동기적으로 File을 읽지만 FileReaderSync는 동기적으로 읽는다. 비동기적인 방법은 이벤트 핸들러를 사용해야하지만 동기적인 방법은 그럴 필요가 없으므로 구현이 단순해진다. FileReaderSync는 WebWorkers 환경에서만 사용할 수 있다. readAsArrayBuffer(blob : Blob) => void ArrayBuffer 형식으로 파일을 읽는다. readAsText(blob : Blob [, encoding] => void 텍스트 형식으로 파일을 읽는다. readAsDataURL(blob Blob) => void DataURL 형식으로 파일을 읽는다. SYNC Example // app.js var worker = new Worker('worker.js'); worker.onmessage = function(e){    // e.data should be an array of ArrayBuffers. }; worker.onerror = function(e){    // e.lineno // e.filename // e.message };  
  • 19. BLOB icon : http://goo.gl/TQfYy1 data : http://caniuse.com/blobbuilder 8 ~ 6 ~ 6 ~ 10 ~ 3 ~ 6 ~
  • 20. icon : http://goo.gl/TQfYy1 data : http://caniuse.com/fileapi 6 ~ 3.6 ~ 5.1 ~ 10 ~ 3 ~ 5.1 ~ FILE
  • 21. icon : http://goo.gl/TQfYy1 data : http://caniuse.com/filereader 6 ~ 3.6 ~ 6 ~ 10 ~ 3 ~ 6 ~ FILE READER
  • 22. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS 30.0 FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 23. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS 30.0 FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 24. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS 7 FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 25. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS 10/11 FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 26. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS Android 2.x FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 27. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS Android 4.x FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 28. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS IOS 6 FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes
  • 29. icon : http://goo.gl/TQfYy1 test : http://goo.gl/STfHCS FileList FileList FileList.item() FileList.length Blob Blob Blob.size Blob.type Blob.slice() Blob.close() File File File.name File.lastModifiedDate FileReader FileReader FileReader.readAsArrayBuffer() FileReader.readAsText() FileReader.readAsDataUrl() FileReader.abort() async read methods FileReader.EMPTY FileReader.LOADING FileReader.DONE FileReader.readyState states FileReader.result FileReader.error file or Blob data FileReader.onloadstart FileReader.onprogress FileReader.onload FileReader.onabort FileReader.onerror FileReader.onloadend event handler attributes IOS 7
  • 30. 명 세 W3C FileAPI 최신 사양 : www.w3.org/TR/FileAPI/ W3C FileAPI 편집자 초안 : dev.w3.org/2006/webapi/FileAPI/ W3C FileWriterAPI : www.w3.org/TR/file-writer-api/ W3C FileSystemAPI : www.w3.org/TR/file-system-api/ W3C Blob Interface : www.w3.org/TR/FileAPI/#constructorBlob W3C File interface : www.w3.org/TR/FileAPI/#file-constructor W3C FileList Interface : www.w3.org/TR/FileAPI/#filelist-section W3C FileReader Interface : www.w3.org/TR/FileAPI/#FileReader-interface= MDN&MSDN MDN Blob : developer.mozilla.org/en-US/docs/Web/API/Blob MDN File : developer.mozilla.org/en-US/docs/Web/API/File MDN FileList : developer.mozilla.org/en-US/docs/Web/API/FileList MDN FileReader : developer.mozilla.org/en-US/docs/Web/API/FileReader MSDN FileList : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453213.aspx MSDN File : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453204.aspx MSDN Blob : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453178.aspx MSDN FileReader : msdn.microsoft.com/en-us/library/windows/apps/xaml/hh453225.aspx caniuse FileAPI : http://caniuse.com/filesystem FileSystem : http://caniuse.com/filesystem Blob constructor : http://caniuse.com/blobbuilder FileReader : http://caniuse.com/filereader
  • 31.     Thank you