2014-08-28 3 views
2

나는 당신에게 어려운 질문을 가지고 있습니다. 나는 지금 당분간 애를 먹고 있습니다.블로 브 (Blob)의 로컬 파일에 저장

로컬 스토리지가 5MB 제한이 있기 때문에 사용자가 컴퓨터에 파일을 저장할 수있는 솔루션을 찾고 있습니다. "파일 저장"- 대화 상자를 원하지만 저장할 데이터는 자바 스크립트에서만 사용할 수 있으며 데이터를 서버로 다시 보내지 않고 다시 보냅니다.

유스 케이스는 압축 및 암호화 된 사용자 데이터 덩어리를 저장하므로 서버는 그 덩어리에 대해 아무 것도 모르고 서버로 다시 데이터를 보내면 4 배의 트래픽이 발생하고 서버가 암호화되지 않은 데이터를 수신하면 전체 암호화가 쓸모 없게됩니다.

"파일로 저장"대화 상자를 사용하여 데이터를 사용자 컴퓨터에 저장하는 자바 스크립트 기능을 발견했지만이 작업은 중단되어 완전히 지원되지 않습니다. 이게 다음과 같습니다. http://www.w3.org/TR/file-writer-api/

그래서 window.saveAs가 없으므로 서버에 모든 것을 보내지 않고 Blob 객체에서 데이터를 저장하는 방법은 무엇입니까?

내가 힌트를 얻을 수 있다면 좋을 것입니다. 무엇을 검색해야합니까? MEGA는 그 일을하기 때문에

나는,이 작품 것을 알고,하지만 난 내 자신의 솔루션을 :) 원하는

당신의 최선의 선택은에서 개체를 가리키는 특별한 URL 인 BLOB URL을 (사용하는 것입니다
+0

비슷한 질문이 여기에 게시 - http://stackoverflow.com/questions/13405129/javascript-create-and-save -file and here - http://stackoverflow.com/questions/18690450/saving-a-file-with-javascript –

답변

7

브라우저의 메모리) :

var myBlob = ...; 
var blobUrl = URL.createObjectURL(myBlob); 

지금 당신은 단순히 URL을 (window.location.replace(blobUrl))로 리디렉션하거나 링크를 생성하기 위해 선택할 수 있습니다. , 파일 선택기 또는 입력 유형 = 파일 파일 선택에서

var link = document.createElement("a"); // Or maybe get it from the current document 
link.href = blobUrl; 
link.download = "aDefaultFileName.txt"; 
link.innerHTML = "Click here to download the file"; 
document.body.appendChild(link); // Or append it whereever you want 
0

로컬 스토리지에 파일 이름을 저장합니다 :

HTML :

<audio id="player1">Your browser does not support the audio element</audio> 
두 번째 솔루션은 기본 파일 이름을 지정할 수 있습니다

자바 스크립트 : 당신은 당신이 셀렉 파일을 재생하려면 코드에서 나중에 그런

function picksinglefile() { 
    var fop = new Windows.Storage.Pickers.FileOpenPicker(); 
    fop.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.musicLibrary; 
    fop.fileTypeFilter.replaceAll([".mp3", ".wav"]); 
    fop.pickSingleFileAsync().then(function (file) { 
     if (file) { 
      // save the file name to local storage 
      localStorage.setItem("alarmname$", file.name.toString()); 
     } else { 
      alert("Operation Cancelled"); 
     } 
    }); 
} 

, ted를 사용하면 음악 라이브러리의 이름 만 사용하여 파일을 가져옵니다. (. UWP 패키지 매니페스트에서, 당신의 'Capabilites'를 포함하는 '음악 라이브러리'를 설정)

 var l = Windows.Storage.KnownFolders.musicLibrary; 
     var f = localStorage.getItem("alarmname$").toString(); // retrieve file by name 
     l.getFileAsync(f).then(function (file) { 
      // storagefile file is available, create URL from it 
      var s = window.URL.createObjectURL(file); 
      var x = document.getElementById("player1"); 
      x.setAttribute("src", s); 
      x.play(); 
     }); 
관련 문제