Upload Multiplo

venerdì 10 giugno 2011 - 17.52
Tag Elenco Tags  C#  |  .NET 3.5  |  Windows 7  |  Visual Studio 2010

Gemini Profilo | Expert

Ciao a tutti
ho bisogno di un controllo per l'upload multiplo.
Quello che vorrei fare è questo:
1-l'utente seleziona 1 o più file immagini
2-l'utente clicca su salva
3-lato server le immagini vengono ridimensionate

Ho trovato qualche esempio con jquery, ma quello che non capisco è come fare a recuperare e a ridimenzionare le immagini dopo che clicco su salva.
Grazie mille

alx_81 Profilo | Guru

>Ciao a tutti
ciao

>ho bisogno di un controllo per l'upload multiplo.
>Quello che vorrei fare è questo:
>1-l'utente seleziona 1 o più file immagini
>2-l'utente clicca su salva
>3-lato server le immagini vengono ridimensionate
per i primi due continua ad usare jQuery, il salvataggio chiama una funzione lato server che potrebbe fare quello che segue:
http://www.codeproject.com/KB/web-image/pnguploader.aspx

>Grazie mille
di nulla!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

andrestu Profilo | Expert

ce ne sono diversi sul web, è un problema che ho affrontato di recente, il punto è trovarne uno stabile e facilmente personalizzabile. Io ne cercavo uno che potesse fare la multi selezione e ovviamente multi upload con tanto di barra di avanzamento e possibilmente con aspetto personalizzabile. Tra tutti quelli free che ci sono in rete sinceramente non ne ho trovato uno con tutte queste caratteristiche e che fosse stabile.
Infatti per la mia breve esperienza quello che ti consiglio viviamente (prima di usarlo regolarmente) è di testarlo bene sopratutto sul server che usi come web-server e fare dei test multi-browser se la tua intenzione è farlo funzionare regolarmente su più browser.
Alcune volte questi componenti lato client utilizzano flash per fare la multiselezione e per le prove che ho fatto non tutti i browser interpretano allo stesso modo la parte flash lato client...
E comunque alla fine ho utilizzato un componente a pagamento...


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

Gluck74 Profilo | Guru

Confermo quello che dice andrestu
Ci sono diversi script javascript e/o plugin jquery che ti possono aiutare nell'interazione sul client, ma non tutti funzionano alla perfezione (anzi, uno perfetto non l'ho trovato).
Tutti ti permettono di selezionare un file alla volta, mentre quelli che fanno la seleziona multipla, sono in flash.
Quindi lato client sta a te scegliere quello che funziona meglio.
In questi giorni, dopo aver letto il tuo post, ho fatto un po di ricerca e di prove; alla fine sono dell'idea che la soluzione semplice è veloce ed efficace. L'utilizzo di script sul client può essere più carina, ma alla fine tra errori e imcompatibilità tra browser, non so se ne vale la pena.


Lato server il cuore è questo:
try { // Get the HttpFileCollection HttpFileCollection hfc = Request.Files; for (int i = 0; i < hfc.Count; i++) { HttpPostedFile hpf = hfc[i]; if (hpf.ContentLength > 0) { hpf.SaveAs(Server.MapPath("MyFiles") + "\\" + Path.GetFileName(hpf.FileName)); } } } catch (Exception ex) { // Handle your exception here }

Riferimenti:
qui puoi trovare un video con relativo codice, che ti spiega passo passo come fare upload di più file in maniera semplice:
http://www.asp.net/general/videos/how-do-i-multiple-file-uploads-in-aspnet-2

qui una soluzione che lato client ti permette una selezione sempre uno ad uno, ma più gestibile prima dell'upload effettivo:
http://www.codeproject.com/KB/aspnet/multiuploads.aspx

come potrai notare dal codice, il cuore è sempre lo stesso, cambia solo l'interazione con l'utente.

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

Gemini Profilo | Expert

infatti avete ragione
non c'è ne uno stabile
anch'io ho fatto un sacco di ricerche
grazie mille

andrestu Profilo | Expert

lo so che non si dovrebbe fare ma questo è uno di quei pochi casi dove l'unica soluzione è trovarne uno craccato, (sempre che non si ci accontenti delle soluzioni di base) ammenochè puoi pensare di costruirtelo te ma il punto è: hai tutto sto tempo a disposizione da dedicare alla sua realizzazione???
Solo dopo 1/2 settimane di ricerche e prove ho capito perchè quelli su licenza costano un botto!!! il bello è che pur pagando alle volte danno lo stesso problemi, quindi prima di spendere, test test e ancora test...

visto che siamo in tema vorrei chiedervi una cosa, io utilizzo hosting Aruba, cè qualcuno di voi che utilizza Aruba e riesce a uploadare e ridimensionare senza problemi un immagine sopra al megabyte?? cioè per essere precisi il problema non è l'upload ma il ridimensionamento su server, ho provato codice diverso ma alla fine risconto sempre la stessa problematica:
"out of memory"
devo fare ancora un paio di test con una paginetta leggera solo con un upload, finora ho provato con un sito che utilizza pesantemente l'oggetto Session e non vorrei che fosse la causa...

suggerimenti in merito????


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

Gemini Profilo | Expert

Ciao
io non ho mai avuto problemi su aruba.
Quale sarebbe questa soluzione a pagamento?
Grazie

Gluck74 Profilo | Guru

>ho provato codice diverso
>ma alla fine risconto sempre la stessa problematica:
>"out of memory"
>devo fare ancora un paio di test con una paginetta leggera solo
>con un upload, finora ho provato con un sito che utilizza pesantemente
>l'oggetto Session e non vorrei che fosse la causa...
>

Non so bene cosa fai con il codice, comunque non usare la session per oggetti e/o dati di grandi dimensioni.
Piuttosto usa la cache o un file binario temporaneo.


____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

andrestu Profilo | Expert

http://ajaxuploader.com/

scusa che codice usi per il ridimensionamento dell'immagine?


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

Gemini Profilo | Expert

Uso questo:

static public void ResizeAndSave(Stream imgStr, int Width, int Height, string FileName) { int imgHeight; int imgWidth; //creo il bitmap dallo stream System.Drawing.Image bmpStream = System.Drawing.Image.FromStream(imgStr); //scelta delle dimensioni delle immagini if (bmpStream.Width > bmpStream.Height) { imgHeight = (Width * bmpStream.Height) / bmpStream.Width; imgWidth = Width; } else { imgWidth = (Height * bmpStream.Width) / bmpStream.Height; imgHeight = Height; } //creo un nuovo bitmap ridimensionandolo Bitmap img = new Bitmap(bmpStream, new Size(imgWidth, imgHeight)); //salvo l'immagine ridimensionata img.Save(FileName, System.Drawing.Imaging.ImageFormat.Jpeg); }

Se vuoi il crop:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

andrestu Profilo | Expert

ok grazie mille appena ho due minuti lo provo e ti faccio sapere...


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

Gluck74 Profilo | Guru

Ciao, questo sembra funzionare con tutti i browser, ed ha anche la versione con la selezione multipla di file:

http://www.uploadify.com/

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

andrestu Profilo | Expert

mmmm l'avevo trovato in rete ma non ricordo per quale motivo non ho provato ad utilizzarlo... buono a sapersi...
grazie per il suggerimento!!!
lo hai per caso mica anche testato su hosting Aruba????


Andrea Restucci - Web Programmer
www.andrearestucci.name
Download and try my FREE custom controls !!!

Gluck74 Profilo | Guru

e no, mi spiace

____________
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.

susan123 Profilo | Newbie

Grafica multipli possono essere facilmente estratta & aggiunti alle immagini, come ad esempio rettangolo, le linee, Beziers, ellissi, curve e altro ancora se si utilizza il VB.NET Imaging Control.
http://www.rasteredge.com/how-to/vb-net-imaging/image-drawing-net-graphics/
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