node js 압축 파일

2894 단어
node js, 패키지 JSZIP 의존
포장 압축
fileCompression: (folderPath) ->
    zip = new JSZip()
    zipPath = pathM.join folderPath,'..',pathM.basename(folderPath)+'.zip'
    flag = "root"
    #                         
    compressionZip= (node,filePath,isroot) =>
      # windows   linux         
      stats = fs.statSync(filePath)
      # 1、  windows       \    linux       /
      str1=node.replace(/\\/g,"/")
      # 2、    
      strs=str1.split("/")
      tmp = zip
      if strs[0] is "."
        isroot = true
      # 3、  tmp            
      getLast = (filePath) =>
        tmp = tmp.folder(filePath)
      if strs isnt null and strs.length isnt 0
        getLast fileItem for fileItem in strs
      # 4、         
      if stats.isFile()
        fileName = pathM.basename(filePath)
        if isroot
          zip.file(fileName,fs.readFileSync(filePath))
        else
          tmp.file(fileName,fs.readFileSync(filePath))
      else
        if flag is "root"
          flag = "children"
          folderZipPath = node
        else
          folderZipPath = pathM.join node,pathM.basename(filePath)
          if isroot
            zip.folder(pathM.basename(filePath))
          else
            tmp.folder(pathM.basename(filePath))
        fileList = fs.readdirSync(filePath)
        if fileList isnt null and fileList.length isnt 0
          compressionZip folderZipPath,pathM.join(filePath,filePathItem),false for  filePathItem in fileList
    compressionZip ".",folderPath,true
    # 5、   zip
    content = zip.generate({type:"nodebuffer",compression:"DEFLATE"})
    fs.writeFileSync(zipPath,content)
    console.log "    "

압축 해제 가방
UnCompressFile: (zipPath, success) ->
    unzipPath = pathM.join zipPath,".."
    cb = (err, data) =>
      if err
        throw err
      object = new JSZip(data)
      readAndwrite = (zipObject) ->
        savePath = pathM.join unzipPath,zipObject.name
        if zipObject.dir
          if fs.existsSync(savePath)
            console.log "      ,             "
          else
            fs.mkdirSync(savePath)
        else
          tmp = savePath.substring(savePath.lastIndexOf('.'))
          tmp = tmp.toUpperCase()
          #             zipObject.asNodeBuffer()      zipObject.asText()
          if tmp is '.PNG' or tmp is '.GIF' or tmp is '.JPG' or tmp is '.JPEG' or tmp is '.BMP'
            fs.writeFileSync(pathM.join(unzipPath,"icon3.png"),zipObject.asNodeBuffer())
          else
            fs.writeFileSync(savePath,zipObject.asText())
      readAndwrite zipObject for fileName , zipObject of object.files
      if typeof success isnt "undefined"
        success()
    fs.readFile(zipPath,cb)

좋은 웹페이지 즐겨찾기