18 messaggi dal 25 settembre 2003
Salve a tutti!!!
Il mio problema è il seguente:
devo recuperare dei file da Sql Server, dati di tipo IMAGE.
Dopo aver recuperato i files, devo zipparli e poi inviarli tramite ftp.

Ho fatto in questo modo:
1) Recupero Stream da DB
2) Scrittura su FileSystem
FileStream fs = new FileStream(Server.MapPath("/temp/"+fileName), FileMode.Create, FileAccess.Write);
fs.Write(dati, 0, dati.Length);
fs.Close();
fs.Dispose();
3) Creazione dello zip
ZipOutputStream s = new ZipOutputStream(File.Create(Server.MapPath("/temp.zip")));...etc.etc..etc

Sarebbe fantastico se io riuscissi a fare tutto ciò senza scrivere niente su disco!!!

La libreria ICSharpCode da questa possibilità?
Non devo utilizzare necessariamente ICSharpCode, quindi anche altre soluzioni sono graditissime!!!

Grazie a tutti
Riccardo

Riko
riko wrote:
Sarebbe fantastico se io riuscissi a fare tutto ciò senza scrivere niente su disco!!!

ti basta usare un MemoryStream anzichè un FileStream per farlo in memoria, senza usare il disco.

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
1 messaggio dal 01 agosto 2011
Salve a tutti.
Riesumo un vecchio post perchè la mia situazione è molto attinente.

Sto cercando di trasferire via FTP un file compresso (gzip).
Il file compresso è a posto (si apre, ecc.) in locale,
una volta trasferito via ftp, però, al momento di riscaricarlo dal server remoto dove viene fatto l'upload, il file appare diverso da quello "originale" in locale e non funziona più a dovere...
Il codice da me usato è il seguente:

        private void ftpFileTransfer(string sourcef, string destf, string ftpName, string ftpPswrd) {
            //if (file exists) {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(destf);
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential(ftpName, ftpPswrd);
            StreamReader sourceStream = new StreamReader(sourcef);
            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            response.Close();
            //}
        }

Per i normali file di testo funziona bene, ma i file compressi li "rovina".
Ho l'impressione che il problema avvenga nel momento in cui si fa quell'encoding in UTF8 (il codice base è stato preso da msdn) ma da solo non riesco a risolvere il problema.

P.S.
Avevo provato anche a guardare questo come riferimento:
http://www.devasp.net/net/articles/display/280.html
ma, come si evince dai commenti, quel codice produce lo stesso effetto in fase di trasmissione di file compressi di quello usato da me. A quei commenti nessuno ha saputo dare una risposta risolutiva, io confido di trovarla qui grazie a voi!
Modificato da danicotra il 01 agosto 2011 23.12 -
Modificato da danicotra il 01 agosto 2011 23.14 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.