2015-10-23 7 views
11

मैं एडमिरल-पिनएडमिरल पिन निर्देशिका

var AdmZip = require('adm-zip'); 

var pathToZip = 'build/release/Ext.zip'; 


var zip = new AdmZip(); 

zip.addLocalFile('background.js'); 
zip.addLocalFile('chrome_ex_oauth.html'); 
zip.addLocalFolder('images'); 
zip.writeZip(pathToZip); 

का उपयोग कर फिर भी एक ज़िप फ़ाइल में फ़ाइलों पैक करने के लिए कोशिश कर रहा हूँ के रूप में फाइल ज़िप करने, सभी फ़ाइलों के रूप में ज़िप और वास्तविक सामग्री के अंदर फ़ोल्डरों नहीं मिल रहा है जोड़ा जा रहा है ज़िप किया गया।

Screenshot

प्रारंभ संदर्भ से नीचे है और यह एक बहुत ही सरल उदाहरण है जो अपेक्षा के अनुरूप काम नहीं कर रहा हो रहा है। मैं क्या गलत कर रहा हूं? https://github.com/cthackers/adm-zip/wiki/ADM-ZIP-Introduction

+0

1,5 साल बाद में उपयोग कर सकते हैं और मैं एक ही मुद्दा ... –

उत्तर

13

तो मैं कुछ खुदाई किया: https://github.com/cthackers/adm-zip/blob/master/adm-zip.js#L275

addFile अंततः addLocalFile द्वारा कहा जाता है, और कहा कि जहां त्रुटि line 281 पर हो रहा है जो विशेष रूप से जहां यह जाँच करता है, तो ZipEntry एक निर्देशिका है हो रहा है। गलत झंडे लागू हो रहे हैं।

इसके आस-पास पहुंचने के लिए, मैंने मैन्युअल रूप से एडफाइल को कॉल करना समाप्त कर दिया और विशेषताओं को स्वयं निर्दिष्ट किया, ताकि यह ऑटो-डिटेक्शन पर भरोसा न करे और फ़ाइलों को निर्देशिका के रूप में गलत तरीके से ध्वजांकित न करे।

addFile(filePathInArchive, fileBuffer, '', 0644 << 16); 

प्राप्त करने के लिए एक fileBuffer खुद के, आप fs.readFile या fs.readFileSync

+1

ज़िप को इस तरह से जोड़ा गया अधिकांश फ़ाइलें दूषित हैं। – Pawel

+0

जिथब पर जारी करने के लिए लिंक: https://github.com/cthackers/adm-zip/issues/182 – meonlol

-1

ADM-जिप की wiki से:

[शून्य] addLocalFile (स्ट्रिंग localPath, स्ट्रिंग zipPath)

संग्रह करने के लिए डिस्क से एक फ़ाइल को जोड़ता है।

[शून्य] addLocalFolder (स्ट्रिंग localPath, स्ट्रिंग zipPath)

संग्रह

को एक स्थानीय निर्देशिका और अपने सभी नेस्टेड फ़ाइलों और निर्देशिकाओं ऐसा लगता है के रूप में आप दूसरा पैरामीटर याद जोड़ता है कि ज़िपपठ है

+2

नहीं, मैं ओपी दावे की पुष्टि कर सकते हैं कर रहा हूँ। addLocalFile फ़ाइल को दूसरी तर्क के साथ या उसके बिना निर्देशिका के रूप में जोड़ता है। मैं यह भी ध्यान देता हूं कि जब तक आप 0644 << 16 का उपयोग चौथे पैरामीटर के रूप में नहीं करते हैं तब तक addFile वही करता है। –

0
var zip = new admZip(); 
var fs=require('fs-extra'); 
zip.addFile('NGINX/app.js',fs.readFileSync('./app.js'),'',0644); 
zip.writeZip("./files.zip"); 
संबंधित मुद्दे