这是我在执行查询时从数据库中获得的结果:
[
{
"name": "file1.txt",
"id": 1,
"file_path": "./public/files/file1.txt"
}
{
"name": "file3.txt",
"id": 3,
"file_path": "./public/files/file3.txt"
},
{
"name": "file4.txt",
"id": 8,
"file_path": "./public/files/file4.txt"
},
{
"name": "file5.txt",
"id": 7,
"file_path": "./public/files/file5.txt"
}
]
我要打印的是这种格式的文件路径 ./ public / files / file1.txt
这是我现在正在尝试的方法,但是似乎不起作用:
var paths = [];
if(result.length > 0) {
var tmp_path = result[0].file_path
var count = 0
result.forEach(element => {
count++
tmp_path = element.file_path
paths.push(decodeURI(tmp_path))
})
console.log(JSON.stringify(paths,null,4))
}
我得到的结果是:
[
"./public/files/file1.txt",
"./public/files/file3.txt",
"./public/files/file4.txt",
"./public/files/file5.txt",
]
在这种情况下,我不是应该使用encodeURI()函数吗?
我正在使用带有路由器和ejs npms的Node.js。因此,这是get函数的一部分,结果将在前端用ejs填充。所以我想做的是在结果上传递正确的格式,即 PATHS
答案 0 :(得分:1)
您可以通过以下方式使用decodeURI()
var uri = "./public/files/file1.txt";
var enc = encodeURI(uri);
var dec = decodeURI(enc);
您可以如下所示以html形式显示此URL:
document.getElementById("demo").innerHTML = dec;
答案 1 :(得分:1)
您可以调整代码,以便将该文件路径作为HTML内容保存在元素div
中,然后从该元素获取HTML以获取解码后的值并将其推入数组。
var result = [
{
"name": "1k",
"id": 1,
"file_path": "./public/files/file1.txt"
},
{
"name": "3k",
"id": 3,
"file_path": "./public/files/file3.txt"
},
{
"name": "4k",
"id": 8,
"file_path": "./public/files/file4.txt"
},
{
"name": "5k",
"id": 7,
"file_path": "./public/files/file5.txt"
}
];
var paths = [];
if(result.length > 0) {
var tmp_path = result[0].file_path
var count = 0
result.forEach(element => {
count++;
tmp_path = element.file_path;
var elem = document.createElement('div');
elem.innerHTML = tmp_path;
paths.push(elem.innerHTML);
})
console.log(JSON.stringify(paths,null,4))
}
答案 2 :(得分:1)
不确定是否适合您,但是您可以使用.map
将数组重新映射为字符串数组,并进行一些调整:
因此,对于每个用file_path
进行的';'
拆分,然后取拆分'filei.text'
的最后一个元素,并在其之前串联'./public/files/'
。
const res = data.map(e => {
const path = e.file_path.split(';');
const fileName = path[path.length-1];
return './public/files/' + fileName;
});
const data = [
{
"name": "1k",
"id": 1,
"file_path": "./public/files/file1.txt"
},
{
"name": "3k",
"id": 3,
"file_path": "./public/files/file3.txt"
},
{
"name": "4k",
"id": 8,
"file_path": "./public/files/file4.txt"
},
{
"name": "5k",
"id": 7,
"file_path": "./public/files/file5.txt"
}
];
const res = data.map(e => {
const path = e.file_path.split(';');
const fileName = path[path.length-1];
return './public/files/' + fileName;
});
console.log(res)
答案 3 :(得分:0)
只需用encodeURI
对file_path
进行编码,您将获得原始网址
例如:
var uri = "./public/files/file1.txt";
console.log(encodeURI(uri));
会返回:
"./public/files/file1.txt"