Descompacatar arquivo .ZIP com ASP
Autor: Márcio Tadeu | Publicado: 2012-02-01T10:00:00-02:00

Uma forma simples de receber um arquivo via upload e descompactá-lo é utilzando o componente EasyZIP. ele pode ser encontrado em http://www.mitdata.com/.Teremos dois arquivos .ASP . O primeiro irá enviar o arquivo e o segundo irá descompactar. Lembrando que para todos estes procedimentos, o usuário do iis terá q ter permissão de escrita para funcionar. Irei utilizar o aspSmartUpload para enviar o arquivo.* O primeiro&lt;form method="POST" action="upload.asp"&nbsp; enctype="multipart/form-data"&gt;&nbsp;&nbsp;&nbsp; &lt;font class="label"&gt;Arquivo: .ZIP&lt;/font&gt;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="botao" value="Processar" class="button"&gt;&lt;/form&gt;----------------------------------------------------------* Upload e descompactandoDim mySmartUploadDim file&nbsp; on error resume nextSet mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")if err.number&lt;&gt;0 then&nbsp;&nbsp;&nbsp; erro="Componente aspSmartUpload.SmartUpload não encontrado"else&nbsp;&nbsp;&nbsp; mySmartUpload.AllowedFilesList = "zip"&nbsp; &nbsp;&nbsp;&nbsp; mySmartUpload.Upload&nbsp;&nbsp;&nbsp; qtd=0&nbsp;&nbsp;&nbsp; erro=""&nbsp;&nbsp;&nbsp; if err.number&lt;&gt;0 then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; erro=Err.description&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fncDiretorio=request.ServerVariables("APPL_PHYSICAL_PATH") &amp; "zip"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set objFS = Server.CreateObject("Scripting.FileSystemObject")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For each file In mySmartUpload.Files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If not file.IsMissing Then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; file.SaveAs(fncDiretorio &amp; "\" &amp; file.FileName)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set ZIP = server.createobject("aspZip.EasyZIP")&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if err.number&lt;&gt;0 then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; erro="Componente aspZip.EasyZip não encontrado"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objFS.DeleteFile( fncDiretorio &amp; "\" &amp; file.FileName), True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Zip.ZipFileName = fncDiretorio &amp; "\" &amp; file.FileName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Zip.ArgsClear&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Zip.UnZip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qtd=qtd+cint("0" &amp; Zip.SuccessCNT)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if cint("0" &amp; Zip.Error)&gt;0 then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; erro="Erro na extração do arquivo: " &amp; Zip.LastMessage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for f = 0 to Zip.GetZipItemsCount - 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objFS.MoveFile fncDiretorio &amp; "\" &amp; Zip.GetZipItem_FIleName( f ), fncDiretorio &amp; "\" &amp; Zip.GetZipItem_FIleName( f )&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objFS.DeleteFile( fncDiretorio &amp; "\" &amp; file.FileName), True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objFS.DeleteFile( fncDiretorio &amp; "\easyZip.txt"), True&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; qtd=qtd+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if qtd=0 and trim(erro)&amp;"C"="C" then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; erro="Nenhum arquivo selecionado"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if&nbsp;&nbsp;&nbsp; end ifend if