354 messaggi dal 13 marzo 2013
Ciao
ho la necessità di aprire un file in c# che, tramite il suo link viene salvato all'interno del browser. Io dovrei parsarlo per compiere delle operazioni.
Posso farlo tramite questi comandi "soliti"?

Stream _streamFile = null;
WebClient _client =new WebClient();
_streamFile = _client.OpenRead(_fileUrl);
StreamReader _reader = new StreamReader(_streamFile);
                
while ((_line = _reader.ReadLine()) != null)
{
    //lettura del file

}

oppure non essendo un file che si apre da browser devo fare altro?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
purtroppo non mi è chiaro il funzionamento dell'applicazione. L'utente ti incolla il link ad un file in una textbox e tu devi, lato server, scaricarlo e leggerlo?
In questo caso, sì, puoi usare la classe WebClient o HttpClient per ottenere il file remoto, salvarlo nel server e poi aprirlo. Occhio al peso dei file, la richiesta di pagina potrebbe andarti in timeout se il download richiede troppo tempo.

Se invece intendi ottenere un file che l'utente aveva scaricato sul suo disco fisso, allora non puoi farlo. L'unico modo per leggere un file dell'utente è lasciarglielo caricare esplicitamente tramite un controllo asp:FileUpload (se usi ASP.NET WebForms).

ciao,
Moreno
Modificato da BrightSoul il 02 aprile 2015 22.15 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ciao
mi sono espresso molto male ma è il primo caso.
L'utente mi incolla l'url per scaricare un file presente su un server remoto (accessibile tramite quel link) ed io devo scaricarlo.
Userò quelle istruzioni
354 messaggi dal 13 marzo 2013
Ciao, ho un altro problema.
Usando questa procedura se devo scaricare un file zip esce corrotto. E' possibile?
Grazie
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,
posta il codice che usi per scaricare il file. In particolare, se stai usando la classe WebClient, dovrai usare il metodo DownloadFile per assicurarti che il contenuto del file remoto venga salvato tale e quale sul disco del tuo server.

Fatto questo, potrebbe comunque esserci un motivo per il cui il file ti arriva corrotto. Ad esempio, il sito da cui lo stai scaricando potrebbe aver disabilitato l'hotlinking, ovvero la possibilità di scaricare il file senza prima aver visitato una loro pagina (o comunque: senza aver attraversato il normale percorso di autenticazione o di navigazione che porta al download).

Di conseguenza, anziché scaricare il file zip, quel che viene scaricato è una pagina web verso cui è stata fatta la ridirezione.
Prova ad aprire quel file zip con blocco note (se non è troppo pesante) e vedi cosa c'è dentro. Magari trovi del testo che ti aiuterà a capire il problema.

ciao,
Moreno
Modificato da BrightSoul il 29 aprile 2015 07.39 -

Enjoy learning and just keep making
354 messaggi dal 13 marzo 2013
Ciao
il codice che uso è questo:

Stream streamFile = null;
//creo il nome del file

WebClient client = new WebClient();
streamFile = client.OpenRead(_fileUri);

StreamReader reader = new StreamReader(streamFile);
StreamWriter writer = new StreamWriter(_fileName);

while (true)
{
  char[] buf = new char[1024];
  int sz = reader.Read(buf, 0, 1024);
  if (sz <= 0)
    break;
  writer.Write(buf, 0, sz);
  if (sz < 1024)
    break; // eof reached
}
reader.Close();
writer.Close();



con i file non zip funziona mentre il file zippato viene salvato ma corrotto.
Il server da cui scarico è lo stesso(uno di prova che sto usando)
1.495 messaggi dal 27 dicembre 2005
Sicuro che questo sia giusto cosi ?

if (sz < 1024)
break; // eof reached
354 messaggi dal 13 marzo 2013
Uno dei miei problemi potrebbe essere quello. Fino a poco fa l'avevo testato con i file non zippati e non dava problemi, con gli zip però potrebbe essere la causa di "rottura"..

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.