在做文件下载重命名时发现扩展名被改变,如何处理?

问题描述

在做文件下载重命名时发现文件名本身自带.符号的话,.后面的文字会被识别成扩展名。
在做文件下载重命名时发现扩展名被改变,如何处理?
如上图,这本身是个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

回到顶部