我有一个文件上传组件,其中使用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。)也许我只是使用了错误的数据格式?
答案 0 :(得分:0)
找出解决方案。我没有做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()
}
一开始的问题确实是错误的数据格式!