FTP e FILE ZIPPATI, bel problema...

venerdì 18 novembre 2005 - 10.13

alessio_fi Profilo | Newbie

Salve, ragazzi. Sto provando il nuovo framework 2.0 e specialmente il nuovo FtpWebRequest.
Ora, se io mi collego al mio sito ftp e recupero un file xml (per esempio) tutto funziona, e bene.
Il problema nasce se voglio recuperare uno zip (che contiene un xml all'interno).
Il file che mi recupera ha lo stesso numero di byte dell'originale, solo che quando lo vado ad aprire, winzip trova dei problemi.
Avete mai avuto problemi del genere?

alessio_fi Profilo | Newbie

se brutalmente lo recupero con un qualsiasi client ftp il file è perfetto. Anche con un semplice darg&drop con explorer.
E così con tutti i file zippati.
Ora, so che non è una prova attendibile, ma aprendoli con un editor, mi accorgo che quello tirato giù con il net ha molti "?" che non ha quello originale.
I byte sono gli stessi ma il contenuto forse no?
Ho usato Encoding.ASCII per scriverlo in un file (perchè usare un UTF8 mi dà errore in partenza)
Consigli?

totti240282 Profilo | Guru

prova con Encoding.default per curiosità.

C'è solo un capitano !!!!!!

alessio_fi Profilo | Newbie

me ne crea uno grosso il doppio impossibile da aprire.
Mi dice che mancano dei byte.
Con Ascii almeno winzip lo fa vedere (ma non aprire)
con default neppure quello.
io poi lo scrivo con uno stremwiter:
writer = new StreamWriter(destinationFile, false);
writer.Write(reader.ReadToEnd());

sbaglio?


alessio_fi Profilo | Newbie

e cosa devo provare quindi?

alessio_fi Profilo | Newbie

il problema sono i file zippati. Ho provato a zippare un jpg e spostarlo su un sito ftp della mia azienda.
Risultato: lo stesso.
Allora è un problema di encoding su i file compressi. E come posso fare?

alessio_fi Profilo | Newbie

ce l'ho fatta, ci tenervo a dirlo per aiutare magari qualcun altro che avrà i miei stessi problemi.
Il problema era sullo streamreader.
Un file zip non contiene tutti i byte necessari alla decompattazione dei file in essi contenuti.
Ho risolto quindi tirando giù via FTP lo stream del file, decomprimerlo (con le classi apposite del framework 2.0) e passare il risultato ad uno streamwriter.
Ed il gioco è fatto.
Grazie a tutti.

danicotra Profilo | Newbie

Salve a tutti.
Riesumo un post vecchio di oltre 5 anni perchè mi trovo nella situazione analoga oggi con la differenza che, per scaricare il file zippato, posso fare affidamento esclusivamente al download da link (anche perchè non ho controllo sul server remoto), sicchè ho bisogno che il file arrivi a destinazione... diciamo "integro" per essere usato.

Il codice da me usato è il seguente:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Che il problema fosse dovuto all'encoding, l'avevo intuito.
Ho provato anche ASCII rispetto a UTF8 ma non cambia,
avevo pensato anche ad usare una codifica Base64 ma non mi pare sia possibile ottenere un array di byte in quel modo...
Da solo purtroppo non riesco a risolvere il problema, eppure in sostanza la cosa da fare è semplice:
trasferire un file compresso (nel mio caso gzip) via ftp in modo che arrivi uguale a quello originale!
Sono sicuro che una soluzione possibile CI DEVE pur essere (a distanza di circa oltre 5 anni), no?
Confido nel vostro aiuto.


D.N.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5