2016-06-19 33 views
0

FileSaverを使用してファイルを保存しようとしていて、「技術的に」動作していますが、ファイルが開かないため「技術的に」と言います。FileSaverでローカルに保存されたファイルが開かれていません。

enter image description here

私が使用してGoogleドライブからファイルをダウンロードします。

はそれが私は、ブランドの新しいファイルを作成し、アップロードし、私は私が手にダウンロードしたファイルを開こうとすると、まだ、ダウンロードしようとしたテストするには:

_service.Files.Export(fileId, type).ExecuteAsStream();

それから私は[]のバイトにそのストリームを変換します

using (var ms = new MemoryStream()) 
{ 
    var stream = StorageService.GetStream(file.StorageId); //invoking previous code 

    stream.CopyTo(ms); 
    resource.Content = ms.ToArray(); //saves to view model 
} 

私のJavascriptを:私が間違っているのかについて

download(fileId: string): void { 
    this.fileStore.download(fileId).then(function (file: StorageFile) { 
    if (file) { 
     let data = new Blob([file.content], { type: file.type }); 
     fileSaver.saveAs(data, file.title); 
    } 
    }); 
} 

任意のアイデア?

ありがとうございます!

答えて

0

問題は、バイト配列(文字列)のデコードに関連していました。それはbase64でした。デコードした後、私はそれを動作させることができました。

はSOから撮影:

let byteCharacters = atob(b64Data); 
let byteArrays = []; 

for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) { 
    let slice = byteCharacters.slice(offset, offset + sliceSize); 
    let byteNumbers = new Array(slice.length); 

    for (let i = 0; i < slice.length; i++) { 
    byteNumbers[i] = slice.charCodeAt(i); 
    } 

    let byteArray = new Uint8Array(byteNumbers); 

    byteArrays.push(byteArray); 
} 

let blob = new Blob(byteArrays, { type: contentType }); 
関連する問題