Caricare dei file ...

mercoledì 06 gennaio 2010 - 23.52

alexmed Profilo | Guru

Ciao a tutti
In una pagina aspx vorrei far scegliere una cartella sul PC locale per poi copiere tutti i file contenuti su una nuova cartella del sito.

il controllo FileUpload se non erro consente la selezione di un file per volta e quindi nel caso di centinaia di file da copiare sarebbe un pò lento.

Cosa posso fare?

Grazie

alexmed

FrancescoGuadagno Profilo | Senior Member

>Ciao a tutti
>In una pagina aspx vorrei far scegliere una cartella sul PC locale
>per poi copiere tutti i file contenuti su una nuova cartella
>del sito.
>
>il controllo FileUpload se non erro consente la selezione di
>un file per volta e quindi nel caso di centinaia di file da copiare
>sarebbe un pò lento.
>
>Cosa posso fare?

Ahimè niente. L'unico modo per spostare file dal client al server è tramite il controllo FileUpload. Anche se tu indicassi con un altro tipo di controllo, anche una banale TextBox, il nome della cartella, quando il controllo (scusa il gioco di parole) torna al server, il server non ha più accesso al client (e se mi permetti è giusto così).

Quindi le soluzioni che hai sono:
1) replicare N fileupload
2) utilizzare controlli ActiveX, Silverlight o quant'altro ti possa permettere di accedere al client con più libertà (e dietro assenso da parte dell'utente sulle opzioni di sicurezza). Per intenderci un controllo come quello usato in Facebook e scritto in Java per il caricamento di immagini in un album.

alexmed Profilo | Guru

Ciao
Ho fatto un pò di ricerche su internet e in effetti anche quelle procedure che si spacciano per Multiple File Upload sono come hai suggerito tu delle N fileUpload.
Quello che però non riesco a capire è perchè non posso fare un ciclo attorno al controllo FileUpload, o magari aggiungere i file direttamente (vi codice intendo) alla HttpFileCollection.

Quali sarebbero i controlli che mi hai suggerito (controlli ActiveX, Silverlight ).

Ciao e grazie

alexmed

FrancescoGuadagno Profilo | Senior Member

>Ciao
>Ho fatto un pò di ricerche su internet e in effetti anche quelle
>procedure che si spacciano per Multiple File Upload sono come
>hai suggerito tu delle N fileUpload.
>Quello che però non riesco a capire è perchè non posso fare un
>ciclo attorno al controllo FileUpload, o magari aggiungere i
>file direttamente (vi codice intendo) alla HttpFileCollection.

Perché devi guardare il tutto dalla giusta prospettiva. Se tu accedi alla HttpFileCollection (ammesso che si possa fare), lo fai da codice C#, ovvero codice lato server, ovvero codice che gira sul server. Questo vuol dire che essendo codice che gira sul server, lo "scope" è il server, e non più il client. Quindi, scusami lo pseudocodice

HttpFileCollection.Add(new File(@"C:\miofile.ext"));

non farebbe altro che aggiungere alla HttpFileCollection il miofile.ext che si trova sul server, e non sul client.
L'unico modo per prelevare file dal client è tramite il controllo FileUpload che non è neanche un controllo ASP.NET bensì html. Questo vuol dire che qualsiasi browser tramite quel controllo html da accesso al file system locale. Se ci pensi l'accesso al file system locale da parte di un browser però sarebbe una operazione alquanto pericolosa, ecco perchè con il fileupload è l'utente che da esplicito consenso.

Altri modi alternativi consistono nell'inserire controlli nè html, nè propriamente webcontrols asp.net ma ad esempio Silverlight, Flash, ActiveX che sono componenti che girano nei browser, dietro esplicito consenso dell'utente, e che quindi hanno più margine d'azione. Io non ne ho mai avuto l'esigenza ma devi fare ricerche per "ActiveX upload file asp.net" ecc..

Un esempio
http://www.element-it.com/multiple-file-upload/activex-uploader.aspx

Considera anche che utilizzando queste componenti i browser aggiornati di default le bloccano, con l'effetto in Explorer di avere quel messaggio giallo in alto che chiede all'utente se attivare il controllo "pericoloso".

Spero di esserti stato d'aiuto
a presto

alexmed Profilo | Guru

Ciao
Ok, quindi a conti fatti, è meglio collegarsi via ftp, creare la cartella e metterci dentro i file.

Ti ringrazio per l'attenzione.

Ciao

alexmed

FrancescoGuadagno Profilo | Senior Member

Ti conviene in effetti rivedere il disegno generale.
a disposizione!

Francesco
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5