嗨,我有一个类似这样的URL:
https://linkhere?response-content-disposition=inline; filename="placeholder.jpg"; filename*=UTF-8''placeholder.jpg response-content-type=image/jpeg&X-Amz-Algorithm=....sometextcontinueshere
我试图像这样解码它,我需要取文件名
const decodedUrl = decodeURIComponent("linkhere")
const urlParams = new URLSearchParams(decodedUrl);
const filename = urlParams.get('filename');
console.log(decodedUrl)
但是由于某种原因不能正常解码,你们有什么想法吗?
没有任何内置的东西可以神奇地获取文件名,因为它不是一个查询字符串参数。你可以做的最简单的事情就是改变任何构建它的东西,使它具有有效的querystring参数,这样你就可以解析它了。
使用已有的参数,您需要读取一个包含文件名的参数。之后,您将不得不从该字符串中解析出文件名。
基本思想:
var str = `https://linkhere?response-content-disposition=inline; filename="placeholder.jpg"; filename*=UTF-8''placeholder.jpg response-content-type=image/jpeg&X-Amz-Algorithm=....sometextcontinueshere`;
const url = new URL(str);
const parts = url.searchParams.get('response-content-disposition').split(/;s/);
const fileNameParam = parts.find(x => x.startsWith('filename=')).match(/"([^"]+)"/)[1];
console.log(fileNameParam);