在做文件下载重命名时发现扩展名被改变,如何处理?
问题描述
在做文件下载重命名时发现文件名本身自带.符号的话,.后面的文字会被识别成扩展名。
如上图,这本身是个pdf格式文件
问题出现的环境背景及自己尝试过哪些方法
自己尝试判断文件名是否有多个.符号分割,如果有多个,在最后一个.符号后面手动加上扩展名
相关代码
export const downloadFile = (fileUrl, fileName, errorCallback) => { try {
const xhr = new XMLHttpRequest()
xhr.open("get", fileUrl, true)
xhr.responseType = "blob"
xhr.send()
xhr.onload = function () {
if (this.status === 200 || this.status === 304) {
if ("msSaveOrOpenBlob" in navigator) {
navigator.msSaveOrOpenBlob(this.response, fileName)
return
}
const blob = new Blob([this.response], {
type: xhr.getResponseHeader("Content-Type"),
})
const url = URL.createObjectURL(blob)
if (fileName.split('.').length >= 2) {// 对于文件名以.结尾的会导致识别为扩展名
let ext = fileUrl.substring(fileUrl.lastIndexOf("."))
fileName = fileName + ext
}
simulateClick(blob, fileName, "_blank")
URL.revokeObjectURL(url)
}
}
xhr.onerror = function () {
errorCallback && errorCallback()
}
} catch (error) {
errorCallback && errorCallback()
}
}
这样处理有个问题,如果取后台返回的文件名带有扩展名的话,会多添加一个扩展名(如xxxx.zip.zip)
你期待的结果是什么?实际看到的错误信息又是什么?
想问问是否有遇到过这种情况的朋友们,大家都是如何解决的这个问题的,有没有其他的解决办法
以上是 在做文件下载重命名时发现扩展名被改变,如何处理? 的全部内容, 来源链接: utcz.com/p/933099.html