sono contento che funzioni
Ti spiego la prova che ho fatto.
Ho creato un sito exnovo chiamato prova.
Con IIS imposto il framework 2
Dentro creo le directory di output, "dirOutput" e "miniature", dotate di permessi di scrittura per l'utente asp.net
Creo la directory bin dove metto le dll recuperate da qui:
http://web.tiscali.it/archivio_esempi/zip/gdi.zip
http://web.tiscali.it/archivio_esempi/zip/zip.zip
(sono 4 dll)
Aggiungo il file chiamato "web.config" dove metto l'istruzione per poter fare l'upload di file di dimensioni maggiori di 4M
codice:
<?xml version="1.0"?>
<configuration>
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="it-IT" uiCulture="it-IT"/>
<httpRuntime maxRequestLength="102400"/>
</system.web>
</configuration>
creo il file asp "upload.asp"
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href="Styles.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h3>Upload immagini zippate con creazione di miniature</h3>
<h5>upload.asp</h5>
<form id="form1" action="upload.aspx" method="post" enctype="multipart/form-data" onsubmit="window.setTimeout(function(){document.getElementById('Submit1').disabled=true;document.getElementById('div2').style.display='';}, 0);" >
<div id="div1">
<input id="file1" name="file1" type="file" size="60" onkeydown="this.blur();" />
</div>
<hr />
<input id="Submit1" type="submit" value="submit" />
</form>
<div id="div2" style="display:none;">
Operazione in corso, prego attendere...
[img]pleasewait.gif[/img]
</div>
<%
dim p_messaggio
p_messaggio = trim(request("p_messaggio"))
if p_messaggio <> "" then
response.Write "<div>" & p_messaggio & "</div>"
end if
if p_messaggio = "Operazione eseguita con successo!" then
Set fs = Server.CreateObject ( "Scripting.FileSystemObject" )
Set dir = fs.GetFolder( Server.MapPath("./dirOutput/miniature") )
For Each File In dir.Files
Response.Write( "[img][/img]" )
Next
end if
%>
</body>
</html>
creo la pagina aspx che si occupa de decompattare il file zip e creare le miniature
codice:
<%@ Page Language="VB" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.Text" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Text" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="System.Drawing.Imaging" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="g=gdi.img" %>
<%@ Import Namespace="z=Zip" %>
<script runat="server">
'percorso di upload
Dim strPercorsoFileUpload As String = Server.MapPath("~/dirOutput")
Dim strPercorsoMiniature As String = Server.MapPath("~/dirOutput/miniature")
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim Messaggio As String = ""
Dim fc As System.Web.HttpFileCollection = Nothing
Try
fc = Me.Request.Files
If fc.Count = 0 Then Throw New Exception("Nessun file zip importato")
For i As Integer = 0 To fc.Count - 1
Dim pf As System.Web.HttpPostedFile = fc(i)
If pf.FileName = "" OrElse pf.ContentLength = 0 Then
Throw New Exception("Nessun file zip importato")
End If
'salvo il file zip e lo scompatto
uploadAndUnzip(pf)
Next
'creo le miniature
creaMiniature(strPercorsoFileUpload, strPercorsoMiniature, 300)
'svuoto la directory di output
svuotaDirectory(strPercorsoFileUpload)
Messaggio = "Operazione eseguita con successo!"
Catch ex As Exception
Messaggio = ex.Message
End Try
'redireziono sulla pagina chiamante
Me.Response.Redirect("upload.asp?p_messaggio=" & Me.Server.UrlEncode(Messaggio))
End Sub
Private Sub uploadAndUnzip(ByVal pf As System.Web.HttpPostedFile)
'ricavo il nome del file con percorso
Dim strFile As String = pf.FileName
'ricavo il nome del file senza percorso
Dim strNomeFile As String = Path.GetFileName(strFile)
'ricavo l'estensione del file
Dim strEstensioneFile As String = Path.GetExtension(strFile).ToLower()
If strEstensioneFile.ToLower <> ".zip" Then
Throw (New Exception("Bisogna importare un file con estensione .zip"))
End If
'file trasferito
Dim strPercorsoFileUploadFile As String = Path.Combine(strPercorsoFileUpload, strNomeFile)
'salvataggio file zip
pf.SaveAs(strPercorsoFileUploadFile)
'decomprimo i file
z.UnZip(strPercorsoFileUploadFile, strPercorsoFileUpload)
End Sub
Protected Sub creaMiniature(ByVal directoryInput As String, ByVal directoryOutput As String, ByVal dimMax As Integer)
Dim files As String() = Directory.GetFiles(directoryInput, "*.jpg")
For i As Integer = 0 To files.Length - 1
g.ImgResizeAndSaveToFile(files(i), dimMax, Path.Combine(directoryOutput, Path.GetFileName(files(i))))
Next
End Sub
Protected Sub svuotaDirectory(ByVal directoryOutput As String)
Dim files As String() = Directory.GetFiles(directoryOutput)
For i As Integer = 0 To files.Length - 1
File.Delete(files(i))
Next
End Sub
</script>
E finalmente... lo provo
. Fai sapere.