Newsgroup: it.comp.lang.delphi
Titolo: File Upload (D2006 - Web Application)

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

chiaro l'uso.
...ovvero?

 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
)

 sapere. :-)
Caso affermativo per me :) 

 ha scritto nel messaggio
news:si6e2293mb7bdcep6...@4ax.com...

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.

 farò sapere. :-)
fai saper, fai sapere  :-)
V.

Michelinok ha scritto:

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.


ma poi, per inviarlo al server?
Avviene automaticamente, quando esegui il post dei dati di una form
html.

 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

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;

> Usa i GUID:
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

 variabile di tipo TGuid ma non gradisce CreateGuid...
Usa il tipo *System.Guid* della Framework Class Library di .NET.


> 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

 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.


tastoni?
Direi che è quello più sbagliato.  Se hai l'help e Google davanti,
perché andare a tastoni ?

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

 "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.

Thanks darò un'occhiata!
Sempre gentile! 

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

 ha scritto nel messaggio
news:442e446a$0$36922$4faf...@reader3.news.tin.it...

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

 eccezione [...]
Controlla anche i permessi del file system attribuiti alla cartella in 
cui stai cercando di scrivere.


 ha scritto nel messaggio 
news:2TsXf.44185$nz4....@tornado.fastwebnet.it...

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 :) 

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!!!). 

 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

Grazie, proverň appena possibile, ovvero domattina :)

 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. :-)


Continua a darmi access denied... :(

 condicio" - anche un esempio per l'operazione inversa: il download. :-)
LOL! Saprei farlo pure io (ed ho detto tutto....)

Correzione...funziona alla grande!

Ovviamente mettendo solo gli hyperlink a mano :)  con 
asp.net
 sono solo agli 
inizi :)

 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.

 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"). :-)
