目的效果:
http://localhost:9000/api/v1/xxx/xxx/xxx/download?data=[{"id":"1647xxxx922369"}]&token="Bear xxxxxxxxxxxxxxx"
问题:1.参数包含数组对象时,用JSON.stringfy()转换后还是出现【object,object】的问题
const temp = [
{
id: row.id,
url: row.url,
name: row.file
}
]
let url = `/api/v1/ftp/public/raw/download?data=${temp}&token=${getToken()}`
window.open(encodeURI(url), '_blank')
解决方法:
const temp = [
{
id: row.id,
url: row.url,
name: row.file
}
]
var a = 'data='.concat(JSON.stringify(temp))
//当在字符串中拼接变量时需要\""+变量名+"\" 如果完成引号不转义html就不会识别引号内的引号会把引号内的引号当成一个变量
let url = `/api/v1/ftp/public/raw/download?${a}&token=${getToken()}`
window.open(url, '_blank')
问题:2.拼上去的参数里的特殊字符被转义 如冒号(:)、斜杠(/)http://localhost:9528/api/v1/ftp/public/raw/download?data=[{%22id%22:%221647158523109404674%22,%22url%22:%22/dis/static_resource/home/MSSData/raws/CH2/20230412/01_030617055_548378_MSS1A_H_2_NBGS_OP_F97_20230412B170607_0001.dat%22}]解决方法:encodeURI:用于对网址编码(不包含参数)
const temp = [
{
id: row.id,
url: row.url,
name: row.file
}
]
const token = getToken()
var a = 'data='.concat(JSON.stringify(temp))
let url = `/api/v1/ftp/public/raw/download?${a}&token=${getToken()}`
window.open(encodeURI(url), '_blank') //encodeURI:用于对网址编码(不包含参数)
问题:3.window.open()下载,闪屏问题
原因:window.open()默认打开一个新窗口
解决方法:window.location.href = ‘下载地址’
const temp = [
{
id: row.id,
url: row.url,
name: row.file
}
]
var a = 'data='.concat(JSON.stringify(temp))
let url = `/api/v1/ftp/public/raw/download?${a}&token=${getToken()}`
window.location.href = encodeURI(url) //不闪屏