Salva file con nome

lunedì 26 novembre 2007 - 10.12

amstrad Profilo | Junior Member

giorno a tutti.
Sto scrivendo una classuccia che da db mi crea un file xml formattato per diventare un file excel.
Questo file deve essere nominato come nomeFile_dataodierna.xls.
da una pagina aspx vorrei aprire una finestra simile a quelle che si usano su client application in cui far scegliere la destinazione del salvataggio all'utente e magari impedirgli di cambiare il nome del file. quindi mi servirebbe solo una maschera in cui far scegliere la cartella di destinazione, che poi passerei alla classe ( creaFile(percorsoFile)) in cui dopo aver fatto:
writer = new StreamWriter(percorsoFile + "/nomeFile.xls", false);
writer.AutoFlush = true;
writer.WriteLine(sb.ToString());
writer.Flush();
writer.Close();
sapete che oggetto posso usare per implementare una maschera simile nella mia applicazione?

amelix Profilo | Expert

Ma il file lo devi scaricare sul client o lo devi salvare sul server?

Andrea - http://www.MelisWeb.eu/

amstrad Profilo | Junior Member

lo genero tramite una funzione che gira sul server, ma lo devo salvare sul client

darisole Profilo | Junior Member

Response.AddHeader("content-disposition", "inline;filename=\"TuoFile.xls\"");

amelix Profilo | Expert

Allora questa tua classe:
> classe ( creaFile(percorsoFile)) in cui dopo aver fatto:
> writer = new StreamWriter(percorsoFile + "/nomeFile.xls", false);
> writer.AutoFlush = true;
> writer.WriteLine(sb.ToString());
> writer.Flush();
> writer.Close();
Non può funzionare...

Devi, anzichè salvare il file, mandare lo sream verso il web...
// Invio i dati in formato XLS al browser this.Page.Response.Clear(); this.Page.Response.Buffer = true; this.Page.Response.AddHeader("Content-Disposition", "attachment; filename=export.xls"); this.Page.Response.ContentType = "application/vnd.ms-excel"; this.Page.Response.ContentEncoding = System.Text.Encoding.UTF8; this.Page.Response.Charset = string.Empty; this.Page.Response.Write(xlsData); this.Page.Response.End();

In questo modo ti fará fare il download del file xls.

Andrea - http://www.MelisWeb.eu/

amstrad Profilo | Junior Member

a dire la verità ho fatto delle prove impostando come nome file il percorso del mio desktop e funziona correttamente.

amelix Profilo | Expert

Certo...
Ma prova a pubblicarlo!


Andrea - http://www.MelisWeb.eu/

amstrad Profilo | Junior Member

provo e se te la meriti corro a darti ragione con la coda tra le gambe

amelix Profilo | Expert

OK!
Se lo pubblichi, probabilmente, ti darà un errore di permessi/percorso non trovato.
Per fortuna internet NON può accedere direttamente alla tua macchina e/o al disco fisso.

Può farlo se tu gli dai il permesso installando activex o altro simile.

Sulla tua macchina funziona xchè server & client sono la stessa macchina...


Andrea - http://www.MelisWeb.eu/

amstrad Profilo | Junior Member

hai ragione...
mi piacerebe sapere il perchè, nel frattempo modifico la classe in base alle specifiche che mi hai dato nel post precedente
lo ho publicato sul server di sviluppo e ho ottenuto un messaggio che mi diceva che non trovava il percorso, quindi immagino che lo salva sul server e non sul client
ma se hai una spiegazione piu esaustiva di questa, il sapere mi piace
o cavolo mi avevi già risposto...
vabhe, a dar conferma ennesima modifico il post

amstrad Profilo | Junior Member

ok così funziona esattamente come mi hai detto che sarebbe funzionato, almeno la generazione del fil, però mi dà l'opportunità di salvare o aprire il file, non c'è un modo in cui posso forzare il download in un percorso dato dall'utente?

pozzoli.samuele Profilo | Senior Member

Direi di no. Non puoi decidere tu cosa deve fare l'utente!

Immagina se entri in un sito e senza chiderti niente, questo sito ti spara un bel connettiti_pagandomi_tanto.exe, in esecuzione automatica, magari mettendo l'attrivuto hidden=true!

Deve poter fare un controllo l'utente!

amstrad Profilo | Junior Member

forse non mi sono spiegato, al momento cliccando sul file compare il mesaggio "salva o apri", io devo fare in modo che compaia solo salva, e se è possibile adoperare un percorso che l'utente stesso imposta prima di cliccare sul link salva file del mio sito

amstrad Profilo | Junior Member

cambio di programma, al momento salvo il file su una cartella del server, in modo da renderlo disponibile anche per gli altri utenti.
facendo in questo modo è possibile una volta listati i file storicizzati poterne proporre il download senza dover per forza passare dalla finestra di explorer che domandase aprire o salvare il file?

pozzoli.samuele Profilo | Senior Member

Hai sempre il problema che non puoi imporre una scelta di questo genere, potenzialmente pericolosa, ad un utente!

Ma puoi mettere sul suo desktop un link ad una cartella sul server, se è un server interno. E li dentro, trova tutti i files che desidera.

Non so se è questo che volevi ottenere...

Per il resto, non riesci ad eludere quel controllo nemmeno con i WebBrowser (di cui alla stampa di prima). Ed a me pare pure più che giusto che sia così!

Sempre se sei su rete interna, però... potrebbe esistere una scappatoia!

La cartella deve essere condivisa con permessi di scrittura e tu da serve, fai una copia del file nella certella condivisa.

(Spero di essere stato chiaro)

In questo modo, l'utente si ritrova il file copiato sul suo pc.

Ricorda che se hai un sistema operativo per reti, quale win XP ma solo versione professional, e sei in rete LOCALE, hai la condivisione c$. Quindi se prendi la prima lettera del percorso, ci metti un $ dopo, e prima metti il nome del pc, che riesci ad ottenere dagli httpheader... riesci ad accedere a quella cartella da remoto. Ti manca solo di accedervi come... tipo... amministratore di dominio. O quantomeno... del pc remoto.

Insomma... Buona fortuna! Due o tre idee... che purtroppo non sono semplicissime ma possono sempre funzionare, te le ho buttate li!
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