Ciao a tutti,
sto cercando d'integrare uno script ASP.NET per il caricamento e lo scopattamento di file ZIP in upload, ora ho trovato questo :
Codice PHP:
<%@ Page Language="VB" Trace="false" Debug="false" %>
<%@ Register TagPrefix="ic" Namespace="ICSharpCode.SharpZipLib" Assembly="ICSharpCode.SharpZipLib, Version=0.85.1.271, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, Safe=true" %>
<%@ import Namespace="ICSharpCode.SharpZipLib.Zip" %>
<%@ import Namespace="ICSharpCode.SharpZipLib.Checksums" %>
<%@ import Namespace="System.IO" %>
<script runat="server">
Public Sub scompatta(ByVal cartella As String, _
Optional ByVal zipFic As String = "", _
Optional ByVal elimina As Boolean = False, _
Optional ByVal rinomina As Boolean = False)
Dim flag as boolean 'gestisce il corretto scompattamento
dim fileName as string
dim elencofile,directoryName,serverFolder as string 'stringa di testo con all'interno i files scompattati
If Not zipFic.ToLower.EndsWith(".zip") Then
zipFic = Directory.GetFiles(zipFic, "*.zip")(0)
End If
'
Dim z As New ZipInputStream(File.OpenRead(zipFic))
Dim theEntry As ZipEntry
'
Do
theEntry = z.GetNextEntry()
If Not theEntry Is Nothing Then 'if 1
directoryName = Path.GetDirectoryName(theEntry.Name)
' fileName = Path.GetFileName(theEntry.Name)
serverFolder = cartella
if (directoryName<> "") then 'se lo zip contiene cartelle
Directory.CreateDirectory(serverFolder +"\"+directoryName)
'response.write("creata directory"+serverFolder +"\"+directoryName+"
")
fileName = directoryName & "\" & Path.GetFileName(theEntry.Name)
else
fileName = Path.GetFileName(theEntry.Name)
end if
elencofile +=fileName +"
"
if (Path.GetFileName(theEntry.Name)<> "") Then 'if 2 serve perchè vengono prese in considerazione anche le sole cartelle
Dim streamWriter As FileStream
Try
streamWriter = File.Create(serverFolder+"\"+fileName)
Catch ex As DirectoryNotFoundException
lblZIP.forecolor=drawing.color.fromname("Red")
lblZIP.text="Errore!"
flag=true
End Try
'
Dim size As Integer
Dim data(2048) As Byte
Do
size = z.Read(data, 0, data.Length)
If (size > 0) Then
streamWriter.Write(data, 0, size)
Else
Exit Do
End If
Loop
streamWriter.Close()
End If'if 2
Else' if 1
Exit Do
End If 'if 1
Loop
z.Close()
if not flag then
lblZIP.forecolor=drawing.color.fromname("Green")
lblZIP.text= "Lista file scompattati:
"+elencofile
end if
' elimina se richiesto il file zip: default --> non elimina
If elimina Then
File.Delete(zipFic)
End If
' rinomina se richiesto
If rinomina Then
try
File.delete (zipFic & ".bak")
finally
File.Copy(zipFic, zipFic & ".bak")
end try
End If
End Sub
Sub BtnUp_Click(sender As Object, e As EventArgs)
dim strFile as string
strFile = inputFile.PostedFile.FileName
'Ricavo il nome del file SENZA percorso.
Dim strNomeFile as string
strNomeFile = System.IO.Path.GetFileName(strFile)
dim strPercorsoFileUpload,strPercorsoFileUnzip as string
'QUI occorre specificare il path dove viene inviato lo zip
'NOTA: va reso dinamico
strPercorsoFileUpload =server.mappath("/public/temp")
'QUI occorre specificare il path dove vengono estratti i file contenuti nello zip
'NOTA: va reso dinamico
strPercorsoFileUnzip =server.mappath("/public/temp/unzip")
'Effettuo UPLOAD
inputFile.PostedFile.SaveAs( strPercorsoFileUpload & "\" & strNomeFile)
'scompatta lo zip
scompatta(strPercorsoFileUnzip,strPercorsoFileUpload & "\" & strNomeFile,true,false)
End Sub
</script>
<html>
<head>
<title>Upload Files zippati</title>
</head>
<body>
<form runat="server">
<table width="100%" align="center">
<tbody>
<tr>
<td align="middle">
E'
possibile spedire al server delle cartelle compresse (file zip).
Scegli
il file
<input id="inputFile" type="file" runat="server" />
<input id="BtnUp" type="button" value="Invia al server" runat="server" onserverclick="BtnUp_Click" />
</p>
</td>
</tr>
</tbody>
</table>
</p>
<p align="center">
<asp:Label id="lblZIP" runat="server" font-names="Verdana" font-size="XX-Small" font-bold="True"></asp:Label>
</p>
</form>
</body>
</html>
ora il problema è qui:
strPercorsoFileUpload =server.mappath("/public/temp")
'QUI occorre specificare il path dove vengono estratti i file contenuti nello zip
'NOTA: va reso dinamico
strPercorsoFileUnzip =server.mappath("/public/temp/unzip")
se provo a fare questo: strPercorsoFileUpload =server.mappath("/public/temp" & session("cartella_dinamica")) semplicemente la variabile session viene ignorata!!!
Ho provato fatto test e la variabile session in questione negli altri casi restituisce il percorso qui nulla!!! :master:
Forse è un problema di sintassi o cosa?