Donachy's Blog

Nessuno è in grado di governare un altro senza il suo consenso.

Abraham Lincoln
\\ Home Page : Articolo
mar142007
  ASPX e ZIP
Di donachy (del 14/03/2007 @ 09:53:10, in Software, linkato 2270 volte)

Non sarebbe comodo poter inviare N file sul vostro sito effettuando un solo upload? Beh...si può fare utilizzando un file ZIP che verrà in seguito estratto dove meglio credete


Ho implementato una paginetta che consente, tramite l'uso della dll SharpZipLib di estrarre i file contenuti in uno Zip, dopo averne fatto l'upload. Trovo utilissima questa funzionalità, però ho dovuto lavorare non poco sulla configurazione e ricompilare la libreria (santo opensource : - D ) aggiungendo nel file AssembyInfo il parametro

[assembly:AllowPartiallyTrustedCallers]

per fare l'upload e utilizzare la libreria ho preso spunto da ASPItalia, modificando il codice per poter estrarre anche file che si trovino all'interno di sottocartelle nello ZIP

Il file al momento viene uploadato in /public/temp e i file estratti vengono creati in /public/temp/unzip, tali percorsi pssono essere modificati ma l'importante è che la cartella di base sia /public (per Aruba) o qualsiasi altra cartella con i permessi di scrittura.


Scarica lo ZIP

Articolo Articolo    Storico Storico Stampa Stampa
 
1
grande !
Di  mago28  (inviato il 14/03/2007 @ 14:49:15)
2
a me non funziona....
Di  Anonimo  (inviato il 04/04/2007 @ 15:50:30)
3
Per anonimo
se magari mi dici chi sei e su che hosting lo stai testando vediamo
Di  donachy  (inviato il 04/04/2007 @ 18:29:52)
4
ciao donachy, sono l'anonimo di ieri...
allora, sono su aruba in hosting windows.
in ogni caso, oggi sono riuscito a farlo funzionare...grazie.
Di  Anonimo  (inviato il 05/04/2007 @ 11:09:56)
5
perfetto mi fa piacere, anche perchè hai la mia stessa configurazione quindi deve funzionare per forza ; - )
Di  donachy  (inviato il 05/04/2007 @ 13:10:26)
6

Ganzo sto' coso : - D

Grande donachy !!!
Di  Sirsly  (inviato il 30/05/2007 @ 18:26:16)
7
Ciao sto cercando di caricare su un dominio aruba il tuo script. Allora ho fatto così, ho creato le cartelle TEMP e UNZIP nella cartella PUBLIC sempre qui ho messo il file UploadAndUnzip.aspx poi ho preso il file web.config e l'ho messo nella root principale infine nella cartella cgi-bin ho estratto la DLL ICSharpCode.SharpZipLib.dll quando vado a chiamare l'upload ricevo errore "Server Error in '/' Application." sulla linea 8 del file web.config , dove sbaglio? Ciao e grazie Fabio
Di  Fabio  (inviato il 05/06/2007 @ 12:14:40)
8
Ok risolto come non detto! : - ) Bastava uploadare la cartella BIN e non mettere la DLL in cgi-bin ... : - )
Molto carino veramente complimenti!
Di  Fabio  (inviato il 05/06/2007 @ 12:42:03)
9
ciao sto cercando rendere dinamico il percorso, ossia nella pagina precedente creo una nuova cartella (es. per data 05062007) quindi devo cambiare questo:
'NOTA: va reso dinamico
strPercorsoFileUpload =server.mappath("/public/temp")
ma non so perchè non accetta ne variabili session ne tantomeno request.querystring... sulla prima non dà errore ma viene ignorata sulla querystring dà un errore in cui dice che non è supportata... te sei riuscito a renderlo dinamico?
Di  Fabio  (inviato il 05/06/2007 @ 16:13:03)
10

prova ad usare semplicemente request("path")

e passargli ?path=

cmq magari mandami una email
Di  achille  (inviato il 06/06/2007 @ 10:23:58)
11
cosa devo tenere del codice per la sola funzione scompa$tta, supponendo che il file.zip su cui lavorare sia già sul server e si chiami sempre nello stesso modo?
Di  Attilio  (inviato il 19/08/2007 @ 14:00:16)
12
un'altra questione: sembra che il processo tenga lockato il file.zip? se non sbaglio, di default viene lasciato sul server....

PS: grazie mille per l'aiuto!!!!!!
Di  Attilio  (inviato il 19/08/2007 @ 14:16:33)
13
Ciao Attilio, allora:

1) la funzione scompatta lavora già sul file presente sul server in quanto l'upload è fatto separatamente tramite la chiamata a riga 105 del codice originale;

2)il file zip è bloccato finchè non viene effettuata la close (riga 67). Successivamente si può scegliere se il file zip deve essere eliminato, rinominato o lasciato sul server in base alle opzioni (true/false) elimina e rinomina passate in scompatta all'atto della chiamata (riga 107)

Spero di esserti stato di aiuto
Di  donachy  (inviato il 23/08/2007 @ 14:57:20)
14
grazie mille, procedo con le mie modifiche, grazie ancora per lo script in generale e per la disponibilità.
Di  Anonimo  (inviato il 24/08/2007 @ 19:05:00)
15
non riesco a fare la chiamata per la sola funzione scompatta...

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)

'FORZO IL NOME DEL FILE.ZIP
strNomeFile ="fotografie.zip"
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/foto")

'scompatta lo zip
Di  Anonimo  (inviato il 27/08/2007 @ 17:44:28)
16
A me funziona cosi:

Sub BtnUp_Click(sender As Object, e As EventArgs)
Dim strNomeFile as string
strNomeFile = "file.zip"
dim strPercorsoFileUpload,strPercorsoFileUnzip as string
'QUI occorre specificare il path dove si trova lo zip
strPercorsoFileUpload =server.mappath("/public/temp")
'QUI occorre specificare il path dove vengono estratti i file contenuti nello zip
strPercorsoFileUnzip =server.mappath("/public/temp/unzip")
'scompatta lo zip scompatta(strPercorsoFileUnzip,strPercorsoFileUpload & "\" & strNomeFile,false,false)
End Sub

A patto che rimuovi il campi < input type =file dall'html, che lo zip sia presente nella cartella /public/temp e che la cartella /public/temp/unzip esista

Di  donachy  (inviato il 28/08/2007 @ 15:33:28)
17
Ciao!
Era un bel pezzo che stavo cercando un modo per inviare file zip sul server e poi scompattarli... ma non mi funziona!!!

Ho il sito ospitato su uno spazio Windows di Aruba, ho scaricato lo zip con tutti i file.
Ho caricato nella root del sito, il file UploadAndUnzip.aspx (dopo aver opportunamente modificato i percorsi per l'upload e l'unzip). Ho caricato, sempre nella root, il file web.config.
Poi ho caricato il file ICSharpCode.SharpZipLib.dll nella cartella cgi-bin, ma non funziona. Ho provato poi a caricarlo nella cartella bin, ma continua a darmi errore sulla riga 8 di web.config.
Parser Error Message: The format of the file 'ICSharpCode.SharpZipLib' is invalid.

Ho letto il commento di qualcun altro che ha risolto caricando la dll su bin e non su cgi-bin, ma a me neanche così funziona.

Heeeelp!!! Thanx!
Di  Roby  (inviato il 03/12/2007 @ 13:57:58)
18
Ciao Roby, anche io utilizzo Aruba, quello che posso dirti è che la dll DEVE PER FORZA trovarsi nella cartella BIN e non CGI-BIN. Il web.config hai usato quello contenuto nello zip o ne avevi già uno tuo? Inoltre controlla (per sicurezza ma dovrebbe esserlo) che il tuo spazio web sia abilitato per ASP.NET, dal pannello di controllo su aruba.
Di  donachy  (inviato il 03/12/2007 @ 14:45:10)
19
Ciao, grazie per la risposta! ; - )

- Ho caricato la cartella bin, con tutto il suo contenuto, nella root del mio sito.
- Ho caricato il tuo web.config.
- Da pannello di controllo di Aruba mi dice: .NET Framework version: 1.1.4322.2407
Sistema Operativo: Microsoft Windows 2003
IIS: Microsoft-IIS/6.0
MDAC: 2.82.3959.0

Mi sembra che sia tutto a posto, ma continua a non funzionare.

Hai qualche idea?

Grazie!
Ciao
Di  Roby  (inviato il 03/12/2007 @ 15:48:42)
20
ciao, il mio ha il
.NET Framework version: 2.0.50727.832 e quindi non vorrei che fosse proprio questo il problema, può essere che il .NET 1 non lo supporti, non so darti altre spiegazioni. Comunque prova ad aprire un ticket su aruba chiedendo se pensano di aggiornare il framework
Di  donachy  (inviato il 03/12/2007 @ 19:07:23)
21
OK, grazie. ; - )
Di  Roby  (inviato il 04/12/2007 @ 00:03:05)
22
Abbiamo scoperto che il sito era ospitato su un server con Windows 2000!!!
Venerdì mi spostano il sito su un server con Windows 2003.

Pare inoltre che le info del pannello di controllo di Aruba non siano affidabili (mi diceva che ero su un server con Windows 2003...

Se tutto va bene, lunedì riproverò il tuo script.

Ciao! ; - )
Di  Roby  (inviato il 05/12/2007 @ 21:44:15)
23
ok, fammi sapere ; - )
Di  donachy  (inviato il 06/12/2007 @ 12:25:05)
Testo (max 1000 caratteri)
Clicca per inserire uno dei seguenti smileys:
Smile arrabbiato Smile assonnato Smile bacio Smile diavolo Smile linguaccia Smile morto Smile occhiali Smile occhiolino Smile risatona Smile shockato Smile sorriso Smile timido Smile triste
Nome
e-Mail / Link
Salva i miei dati per i futuri commenti

non compilare questo campo(ANTISPAM).


Disclaimer
L'indirizzo IP del mittente viene registrato, in ogni caso si raccomanda la buona educazione.