Discussione:
File Upload (D2006 - Web Application)
(troppo vecchio per rispondere)
Valter Buccinà
2006-03-26 21:16:07 UTC
Permalink
Dovrei permettere ad un utente precedentemente loggato alla propria pagina
personale di scaricare un file di testo sul server preferibilmente in una
directory sempre personale.
Vedo che tra gli HTML Elements è disponibile un File Upload ma non mi è
chiaro l'uso.
In un post trovato su Google si consigliava di trasformare l'elemento in un
controllo Asp per gestirlo al meglio ma le informazioni sono troppo poche
per me.
Avete qualche link di riferimento riguardo l'argomento o qualunque consiglio
che mi aiuti a schiarirmi le idee?

Grazie

Valter
Andrea Laforgia
2006-03-26 22:49:34 UTC
Permalink
On Sun, 26 Mar 2006 23:16:07 +0200, "Valter Buccinà"
Post by Valter Buccinà
Vedo che tra gli HTML Elements è disponibile un File Upload ma non mi è
chiaro l'uso.
...ovvero?
Valter Buccinà
2006-03-27 13:15:07 UTC
Permalink
Post by Andrea Laforgia
On Sun, 26 Mar 2006 23:16:07 +0200, "Valter Buccinà"
Post by Valter Buccinà
Vedo che tra gli HTML Elements è disponibile un File Upload ma non mi è
chiaro l'uso.
...ovvero?
Forse mi aspettavo la pappa pronta ma tutto quello che ottengo è "caricare"
il file da uploadare nel text box...
ma poi, per inviarlo al server?
Questo elemento si limita a fornire uno "Sfoglia" ed il resto degli eventi è
da gestire o... non vedo l'acqua nel mare?

V.
Andrea Laforgia
2006-03-27 19:31:22 UTC
Permalink
On Mon, 27 Mar 2006 15:15:07 +0200, "Valter Buccinà"
Post by Valter Buccinà
ma poi, per inviarlo al server?
Avviene automaticamente, quando esegui il post dei dati di una form
html.
Marco Breveglieri
2006-03-26 23:12:25 UTC
Permalink
Post by Valter Buccinà
Avete qualche link di riferimento riguardo l'argomento o qualunque consiglio
che mi aiuti a schiarirmi le idee?
Ne ho già fatto uso. Devi rendere il controllo HtmlFileUpload "lato
server" attraverso il menu contestuale o aggiungendo l'attributo
runat="server" al tag che lo rappresenta: in questo modo, potrai agire
sul controllo e sui metodi e le proprietà della classe a cui appartiene.

Dovresti sempre avere sottomano la "Microsoft .NET SDK Documentation"
per ispezionare così le istruzioni per l'uso... ;-)

Stavo pensando di pubblicare un esempio di "upload" con ASP.NET, assieme
ad un esempio di download... in caso affermativo, se trovo il tempo,
farò sapere. :-)

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Michelinok
2006-03-27 11:16:43 UTC
Permalink
....
Post by Marco Breveglieri
Stavo pensando di pubblicare un esempio di "upload" con ASP.NET, assieme
ad un esempio di download... in caso affermativo, se trovo il tempo, farò
sapere. :-)
Caso affermativo per me :)
Marco Breveglieri
2006-03-27 15:52:48 UTC
Permalink
Post by Michelinok
Post by Marco Breveglieri
Stavo pensando di pubblicare un esempio di "upload" con ASP.NET, assieme
ad un esempio di download... in caso affermativo, se trovo il tempo, farò
sapere. :-)
Caso affermativo per me :)
In caso affermativo nel senso di "se ce la faccio visti i miei
impegni"... comunque è andata bene, il tempo l'ho trovato in pausa
pranzo. :-)

Sul mio blog, nella sezione delle "Pillole" appositamente dedicata, ho
pubblicato un esempio (con commenti di contorno nel codice).

Fatene buon uso. In caso di problemi, per non ammorbare il gruppo di
discussione, c'è anche uno spazio dedicato ai commenti.

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Valter Buccinà
2006-03-27 20:51:28 UTC
Permalink
Post by Marco Breveglieri
Fatene buon uso.
Si potrebbe farne altrimenti? :-)
Post by Marco Breveglieri
In caso di problemi, per non ammorbare il gruppo di
discussione, c'è anche uno spazio dedicato ai commenti.
Non ho avuto problemi quindi ti vorrei fare una domanda qui (potrebbe venire
utile anche ad altri)...
Per esigenze personali prima di effettuare l'upload rinomino il file
utilizzando il nome (univoco) dell'utente più un'altro parametro che al
contrario è universale per l'intera sessione (che potrebbe durare anche una
settimana):
es:
paola_36.txt
valter_36.txt
ecc.
Dato che tutti gli utenti registrati dovrebbero poter uploadare file diversi
anche più volte al giorno ed io dovrei alla scadenza "raccogliere" questi
file e svuotare la cartella <upload>, il problema è la savrascrittura.
Ho pensato che potrei accodare al nome del file composto
nomeUtente_nSessione la data e l'ora dell'operazione...in questo modo avrei
nomi di file sempre diversi ma se per qualche disgraziata circostanza
l'utente gioca con l'orologio del suo pc potrei per assurdo ritrovarmi due
file con lo stesso nome...
Ora vedo se è possibile utilizzare una sorta di fileexists (buio assoluto,
parte una nuova ricerca :-) ) ma se puoi darmi un'input è ben accetto.
Grazie per il tuo lavoro messo a disposizione

Valter
Andrea Laforgia
2006-03-27 21:02:49 UTC
Permalink
On Mon, 27 Mar 2006 22:51:28 +0200, "Valter Buccinà"
Ora vedo se è possibile utilizzare una sorta di fileexists[...]
Usa i GUID:

procedure TForm1.Button1Click(Sender: TObject);
var
Guid: TGUid;
begin
CreateGUID(GUID);
ShowMessage('tuofile'+GUIDToString(Guid)+'.txt');
end;
Valter Buccinà
2006-03-27 21:43:48 UTC
Permalink
Fantastico! :-)
L'ho provata sotto D7 ed è perfetta...
ora mi resta da capire come implementarlo in Net in quanto accetta la
variabile di tipo TGuid ma non gradisce CreateGuid...
Mi affretto però a risponderti perchè è proprio quello che mi serviva...

Valter
Marco Breveglieri
2006-03-27 21:58:12 UTC
Permalink
Post by Valter Buccinà
ora mi resta da capire come implementarlo in Net in quanto accetta la
variabile di tipo TGuid ma non gradisce CreateGuid...
Usa il tipo *System.Guid* della Framework Class Library di .NET.

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Valter Buccinà
2006-03-28 14:03:57 UTC
Permalink
Post by Marco Breveglieri
Usa il tipo *System.Guid* della Framework Class Library di .NET.
Ok, fatto, ma avrei un paio di domande abbastanza scontate per voi ma che
potrebbero chiarirmi alcuni concetti.
Mi suggerisci di avvalermi della Microsoft .NET SDK Documentation...

Gli esempi sono in VB e C#. E' sottinteso che ne posso trarre solo delle
indicazioni da adattare poi sotto Delphi?

Per i Guid mi hai detto di usare il tipo System.Guid.
Ho impiegato circa un quarto d'ora per ottenere il Guid, procedendo per
"intuizione" ed ottenendo in prima istanza un Guid totalmente a zero.

Questo è il codice apparentemente funzionante:

var
Guidx : System.Guid;
begin
Guidx := Guid.NewGuid;
[cut]
// leggo il valore con Guidx.ToString;
[cut]
end;

Intanto, è il codice corretto?
Ma ancora più importante: è l'unico modo di procedere quello di andare a
tastoni?
Oltre all'help in linea (alle volte un pò carente) dove, se disponibile, si
possono trovare dei diagrammi che indichino tutti i contenuti dei namespace?
Cioè, se non me lo dicevi tu come potevo trovare Guid in System?

Grazie per la vostra attenzione.

Valter
Marco Breveglieri
2006-03-28 14:33:10 UTC
Permalink
Post by Valter Buccinà
Mi suggerisci di avvalermi della Microsoft .NET SDK Documentation...
Gli esempi sono in VB e C#. E' sottinteso che ne posso trarre solo delle
indicazioni da adattare poi sotto Delphi?
"Indicazioni" è dire poco. A parte la differente sintassi, le restanti
informazioni (metodi, proprietà ed eventi, versioni in overload,
parametri richiesti, valori aspettati, note, ecc.) sono ovviamente
valide anche per Delphi, in quanto si utilizza la stessa libreria di base.
Post by Valter Buccinà
Per i Guid mi hai detto di usare il tipo System.Guid.
Ho impiegato circa un quarto d'ora per ottenere il Guid, procedendo per
"intuizione" ed ottenendo in prima istanza un Guid totalmente a zero.
Non capisco perché andare per intuizione avendo una guida davanti. :-)
E' sufficiente leggere la documentazione completa della classe
*System.Guid*, analizzando i metodi di cui è composta e ciò che fanno
per sapere quale richiamare a seconda delle necessità.
Post by Valter Buccinà
[...]
Intanto, è il codice corretto?
Se lo scopo del codice è generare un GUID e ottenere la rappresentazione
sottoforma di stringhe, il codice sembra corretto.
Post by Valter Buccinà
Ma ancora più importante: è l'unico modo di procedere quello di andare a
tastoni?
Non capisco cosa intendi. Non si va a "tastoni": hai una documentazione
sottomano.
Post by Valter Buccinà
Oltre all'help in linea (alle volte un pò carente) dove, se disponibile, si
possono trovare dei diagrammi che indichino tutti i contenuti dei namespace?
Cioè, se non me lo dicevi tu come potevo trovare Guid in System?
Ho letto libri in cui se ne parlava, ho fatto ricerche in rete... il
problema relativo alla conoscenza dell'esistenza o meno del tipo
*System.Guid* vale per qualsiasi classe o membro di essa, di qualsiasi
libreria, di qualsiasi linguaggio.

Se non trovi nulla cercando, al massimo chiedi. Una volta ottenuto il
tipo che fa al caso tuo, avendo a disposizione una vasta guida (la
"Microsoft .NET SDK Documentation") non capisco quali siano i problemi.

Al massimo, dovrebbe trattarsi di adattare alcune brevi porzioni di
codice, ma lo sforzo è minimo.

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Andrea Laforgia
2006-03-28 22:30:32 UTC
Permalink
On Tue, 28 Mar 2006 16:03:57 +0200, "Valter Buccinà"
Post by Valter Buccinà
Gli esempi sono in VB e C#. E' sottinteso che ne posso trarre solo delle
indicazioni da adattare poi sotto Delphi?
E' sottinteso che è sottinteso.
Post by Valter Buccinà
Ma ancora più importante: è l'unico modo di procedere quello di andare a
tastoni?
Direi che è quello più sbagliato. Se hai l'help e Google davanti,
perché andare a tastoni ?
Valter Buccinà
2006-03-29 08:39:05 UTC
Permalink
fino al buon caro D7 guida in linea ed F1 mi hanno tolto dagli impicci per
il 99% dei casi...
cmq sto cominciando ad entrare nella logica .NET (chi ha mormorato
"finalmente"??? :-) )
Grazie per il vostro aiuto

Valter
Marco Breveglieri
2006-03-29 11:40:52 UTC
Permalink
Post by Valter Buccinà
fino al buon caro D7 guida in linea ed F1 mi hanno tolto dagli impicci per
il 99% dei casi...
cmq sto cominciando ad entrare nella logica .NET (chi ha mormorato
"finalmente"??? :-) )
L'unica cosa che cambia è che a toglierti dagli impicci, invece di
essere la Guida in linea di D7, è la documentazione della FCL di .NET.

Ciao,
Marco.
Michelinok
2006-03-30 20:42:28 UTC
Permalink
Thanks darò un'occhiata!
Sempre gentile!
Michelinok
2006-04-01 09:17:46 UTC
Permalink
Ciao Marco, il tuo progetto funziona benissimo, ma se faccio un copia
incolla in un'altro progetto e lo faccio girare su IIS, ottengo questa
eccezione:

Eccezione: Access to the path "c:\inetpub\wwwroot\FTBox\pippo.txt" is
denied.

Nonostante abbia messo in scrittura FTBOX
Valter Buccinà
2006-04-01 10:52:30 UTC
Permalink
Post by Michelinok
Ciao Marco, il tuo progetto funziona benissimo, ma se faccio un copia
incolla in un'altro progetto e lo faccio girare su IIS, ottengo questa
Eccezione: Access to the path "c:\inetpub\wwwroot\FTBox\pippo.txt" is
denied.
Nonostante abbia messo in scrittura FTBOX
A me non da errori, anch'io ho creato una cartella per l'upload...
eventualmente verifica, un problema del genere l'ho risolto assegnando i
diritti completi all'utente USER, non solo a IUSR INTERNET...
Ciao

Valter
Michelinok
2006-04-01 13:59:06 UTC
Permalink
Post by Valter Buccinà
Post by Michelinok
Ciao Marco, il tuo progetto funziona benissimo, ma se faccio un copia
incolla in un'altro progetto e lo faccio girare su IIS, ottengo questa
Eccezione: Access to the path "c:\inetpub\wwwroot\FTBox\pippo.txt" is
denied.
Nonostante abbia messo in scrittura FTBOX
A me non da errori, anch'io ho creato una cartella per l'upload...
eventualmente verifica, un problema del genere l'ho risolto assegnando i
diritti completi all'utente USER, non solo a IUSR INTERNET...
Ciao
Valter
Potresti essere più specifico? Io non ho settato alcun "privilegio" per gli
utenti...mi guideresti passo passo? Magari è una scemata, ma non ho capito
il concetto :)
Valter Buccinà
2006-04-01 18:56:09 UTC
Permalink
Post by Michelinok
Potresti essere più specifico? Io non ho settato alcun "privilegio" per gli
utenti...mi guideresti passo passo?
Sempre che tu non lo abbia già fatto ed il tuo problema sia un'altro...
Risorse del comp -> Strumenti -> Opzioni cart -> Visualizzazione -> togli
spunta da Utilizza condivisione file semplice
Sulla cartella di Upload -> Proprietà -> Protezione
Se non ci fossero gli utenti Account Internet Guest e Users aggiungili ->
Aggiungi -> Avanzate -> Trova ecc.
Assegna controllo completo ad entrambi.
Una nota: da tutte le info raccolte mi risultava che l'utente interessato
dovesse essere solo il primo che ti ho citato...ma continuava a non poter
scrivere...sono arrivato allo Users a forza di prove ma onestamente non so
se è corretto...cmq più nessun problema

Ciao

Valter
Michelinok
2006-04-01 19:08:50 UTC
Permalink
Grazie, proverò appena possibile, ovvero domattina :)
Michelinok
2006-04-02 09:17:58 UTC
Permalink
Continua a darmi access denied... :(
Michelinok
2006-04-02 09:38:23 UTC
Permalink
Correzione...funziona alla grande!
Marco Breveglieri
2006-04-01 13:46:59 UTC
Permalink
Post by Michelinok
Ciao Marco, il tuo progetto funziona benissimo, ma se faccio un copia
incolla in un'altro progetto e lo faccio girare su IIS, ottengo questa
eccezione [...]
Controlla anche i permessi del file system attribuiti alla cartella in
cui stai cercando di scrivere.

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Valter Buccinà
2006-03-27 13:32:10 UTC
Permalink
Post by Marco Breveglieri
Ne ho già fatto uso. Devi rendere il controllo HtmlFileUpload "lato
server" attraverso il menu contestuale o aggiungendo l'attributo
runat="server" al tag che lo rappresenta: in questo modo, potrai agire
sul controllo e sui metodi e le proprietà della classe a cui appartiene.
ok, ci studio un pò
Post by Marco Breveglieri
Stavo pensando di pubblicare un esempio di "upload" con ASP.NET, assieme
ad un esempio di download... in caso affermativo, se trovo il tempo,
farò sapere. :-)
fai saper, fai sapere :-)

V.
Michelinok
2006-04-01 14:38:00 UTC
Permalink
Per chi volesse approfondire (non ho ancora testato il codice,ma fà le
stesse cose del nostro Marco)

http://delphi.about.com/od/aspnet/l/aa070604a.htm

Anche qui mi suggeriscono di cambiare i permessi per gli utenti...(ma non ci
sono altri utenti tranne l'administrator!!! uff!!!).
Marco Breveglieri
2006-04-02 01:40:34 UTC
Permalink
Post by Michelinok
Per chi volesse approfondire (non ho ancora testato il codice,ma fà le
stesse cose del nostro Marco)
E' un esempio interessante anche questo. Sto preparando - per "par
condicio" - anche un esempio per l'operazione inversa: il download. :-)

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Michelinok
2006-04-02 08:39:51 UTC
Permalink
Post by Marco Breveglieri
Post by Michelinok
Per chi volesse approfondire (non ho ancora testato il codice,ma fà le
stesse cose del nostro Marco)
E' un esempio interessante anche questo. Sto preparando - per "par
condicio" - anche un esempio per l'operazione inversa: il download. :-)
LOL! Saprei farlo pure io (ed ho detto tutto....)
Michelinok
2006-04-02 10:56:37 UTC
Permalink
Ovviamente mettendo solo gli hyperlink a mano :) con asp.net sono solo agli
inizi :)
Valter Buccinà
2006-04-02 18:59:33 UTC
Permalink
Post by Marco Breveglieri
Sto preparando - per "par
condicio" - anche un esempio per l'operazione inversa: il download. :-)
Giusto! Rispettiamo la par condicio :-)
Avvisi qui o verifico di tanto in tanto sul tuo sito?

V.
Marco Breveglieri
2006-04-03 11:44:30 UTC
Permalink
Post by Valter Buccinà
Avvisi qui o verifico di tanto in tanto sul tuo sito?
Per chi è interessato, ho pubblicato l'esempio di download con ASP.NET
(sezione "Pillole"). :-)

Ciao,
Marco.
--
MARCO BREVEGLIERI
(http://www.marco.breveglieri.name)
Continua a leggere su narkive:
Loading...