簡體   English   中英

將FileReader.readAsText()結果字符串轉換回文件對象以供下載?

[英]Convert FileReader.readAsText() result string back into a file object for download?

我有一個文件上傳組件,其中使用fileReader.readAsText()處理文件,然后將其轉換為base64並發送到服務器。

問題是我還需要允許用戶再次下載文件。 我已經解碼了,嘗試轉換為ArrayBuffer(除其他外),然后下載,但沒有成功。 我已經對SO進行了全面的研究,但沒有發現任何東西。 這就是我要下載的方式:

 downloadFile (type) {
  // the file is already decoded at this point and is the result of
  // fileReader.readAsText()
  var reader = new FileReader()
  var blob = new Blob([this.uploadedFile])
  reader.onload = function () {
    var temp = reader.result
    var a = document.createElement('a')
    a.download = 'test.pdf'
    a.href = window.URL.createObjectURL(new Blob([temp], {type: 'application/pdf'}))
    a.dataset.downloadurl = [a.download, a.href].join(':')
    a.click()
  }
  reader.readAsArrayBuffer(blob)
}

出來后,它只會下載空白的PDF(我還必須支持.rtf,.odf,.doc,.docx。)也許我只是使用了錯誤的數據格式?

找出解決方案。 而不是執行fileReader.readAsText(),我改為使用fileReader.readAsDataURL(),然后現在下載看起來像這樣

downloadFile() {
  var a = document.createElement('a')
  a.download = fileName
  a.href = fileData
  a.dataset.downloadurl = [a.download, a.href].join(':')
  a.click()
}

最初的問題確實是錯誤的數據格式!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM