2016-11-15 36 views
0

我想生成一个zip文件与数据库返回的文件名称。我使用下面的代码:传递字符串仍然nodejs res.zip给出的错误路径必须是字符串

var pathforZip = ''; 
for(let k=0;k<filenameArray.length;k++){ 
    if(resultset[k].length > 0){ 
     pathforZip += "{ path:"+"'./"+filenameArray[k]+"', name: "+"'"+filenameArray[k]+"'},"; 
    } 
} 

pathforZip = pathforZip.substring(0, (pathforZip.length-1)); 

res.zip([pathforZip],new Date().getTime()+'.zip'); 

当我打印pathforZip和类型它给了我

{ path:'./begins.csv', name: 'begins.csv'}, 
{ path:'./ends.csv', name: 'ends.csv'}, 
{ path:'./crashes.csv', name: 'crashes.csv'} 

和类型为字符串,但我得到一个错误,路径必须是资源的字符串。拉链

+0

尝试使用toString()将其转换为字符串。例如:{path:'./'+ filenameArray [0] .toString(),name:filenameArray [0]} –

+0

如果你不读它,你为什么要在循环中写'pathforZip'? – greuze

+1

@Surjeet Bhadauriya它没有工作 – AJS

回答

1

我想你想要的是创造objetcs数组传递给res.zip,这样的事情:

let paths = []; 
for(let k=0;k<filenameArray.length;k++){ 
    if(resultset[k].length > 0){ 
     paths.push({ path:'./'+filenameArray[k], name: filenameArray[k]}; 
    } 
} 

res.zip(paths, new Date().getTime()+'.zip'); 

对不对?

+1

是的,你是对的。 – AJS

+0

所以@ABC,投票的答案,并将其标记为接受:) – greuze

+1

完成!非常感谢 !! – AJS

相关问题