나는 createObjectURL()
을 사용하지 않았지만, 올바르게 이해했다면 본질적으로 파일이나 메모리 내 개체에 대한 임시 참조입니다. 실제 비디오를 저장하려면 다음에 사용자가 응용 프로그램을 방문 할 때 비디오 포인터가 더 이상이 포인터에 의해 참조되지 않으므로 유용하지 않습니다.
대신 URL에 실제로 파일의 전체 데이터가 포함되어 있으므로 data:
URL로이 작업을 수행 할 수 있습니다. This example은 FileReader
을 사용하여 데이터 URL을 생성하는 방법을 보여줍니다. 나는이 작업을 수행 할 수 있어야한다고 생각 :
var reader = new FileReader();
reader.onload = function(e) {
var myDataUrl = e.target.result;
// do something with the URL in the DOM,
// then save it to local storage
};
reader.readAsDataURL(file);
업데이트
: 당신이 당신의 의견에주의로, 최대 1GB 가고 싶은 경우에, 당신은 아마 더
FileSystem API에 의해 제공 될 것입니다. 이렇게하려면 로컬 파일을 가져 와서 파일의
복사본을 영구 파일 시스템 저장소에 저장 한 다음
createObjectURL()
을 사용하여 파일 복사본의 URL을 가져와야합니다. 여전히 디스크 공간에 문제가 있습니다. 사용자의 파일 시스템에 1GB의 중복 파일 내용을 추가했는데, 그렇지 않으면 브라우저 샌드 박스 외부의 파일에 대한 지속적인 참조를 유지할 수 없다고 생각합니다.
createObjectURL()은 사용자 컴퓨터의 파일에만 연결되기 때문에 FileObject는 파일의 모든 데이터를 메모리에 저장하므로 FileReader를 사용하면 createObjectURL()과 다릅니다. 많은 무게를 내지 않기 때문에 그림이 잘 작동하지만 사용자가 내 애플리케이션으로 재생할 계획 인 비디오는 1GB까지 올라갈 수 있으며, 이미이 기능을 모두 사용하고 있다면 컴퓨터에 저장 ... – Cokegod
맞아,하지만'createObjectURL()'이 그 파일에 대한 * 영속적 인 참조를 제공한다고 생각하지 않는다. 그래서 페이지가 언로드 될 때 취소된다. 파일에 대한 지속적인 참조 허용 - 예 : 파일 경로를 통해 - 보안 우려가 될 것입니다. 그래서 저는 여러분이 모든 것을 구해야한다고 제안합니다. – nrabinowitz
FileSystem API에 무제한의 데이터를 쓸 수 있으며 ('window.PERSISTENT'를 지정하여 파일을 계속 유지할 수 있습니다). window.requestFileSystem (window.TEMPORARY, 10 * 1024 * 1024/* 10 MB * /, onInitFs, errorHandler)' [여기 html5Rock 튜토리얼보기] (http://www.html5rocks.com/en/) tutorials/file/filesystem /) 사용하려는 데이터의 양을 설정하십시오. –