Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Aiuto.. Barra di preload su upload

    Ciao a tutti, premetto che sono bianoc di asp.net e attrentanto di c#.
    Ho trovato e modificato questo script (molto discusso sul forum), ma vorrei integrare una barra di avanzamento.. Come fare?
    C'è qualk1 che ha già integrato questa funzione su questo script?

    ecco il codice:

    pagina.cs

    void Page_Load(object sender, System.EventArgs e)
    {

    Status.Text += "";
    } // void Page_Load(object sender, System.EventArgs e)


    bool IsImage(string fileName)
    {
    string ext = Path.GetExtension(fileName).ToLower();
    bool imageFlag = false;

    if (ext != null)
    {
    switch (ext)
    {
    case ".gif" : // Graphics Interchange Format image format (extension .gif)
    case ".bmp" : //Bitmap image format (extension .bmp)
    case ".tiff" : // Tag Image File Format (extension .tif)
    case ".tif" : // Tag Image File Format (extension .tif)
    case ".jpeg" : // Joint Photographic Experts Group image format (extensions .jpg, .jpeg)
    case ".jpg" : imageFlag = true; break; // Joint Photographic Experts Group image format (extensions .jpg, .jpeg)

    default: imageFlag = false; break; // Not a supported file type.
    } // switch (ext)
    } // if (ext != null)
    else
    imageFlag = false;

    return imageFlag;
    } // bool IsImage(string fileName)


    void CalcolaAspectRatio(double orgWidth, double orgHeight, ref double newWidth, ref double newHeight)
    {
    // Se le dimensioni dell'immagine originale e quelle nuove coincidono non facciamo nulla.
    if ((orgWidth == newWidth) && (orgHeight == newHeight)) return;

    // Se le dimensioni originali dell'immagine sono minori di quelle desiderate lasciamo stare.
    // In pratica NON facciamo l'ingrandimento della stessa.
    if ((newWidth > orgWidth) && (newHeight > orgHeight))
    {
    newWidth = orgWidth;
    newHeight = orgHeight;
    return;
    }

    double resw = newWidth;
    double resh = newHeight;
    double aw = orgWidth / orgHeight; // fattore larghezza.
    double ah = orgHeight / orgWidth; // fattore altezza.

    // Se l'immagine è più piccola del Thumbnail forziamo le dimensioni di
    // quest'ultimo alle dimensioni dell'immagine.
    if (resw > orgWidth) resw = orgWidth;
    if (resh > orgHeight) resh = orgHeight;
    // Se le dimensioni dell'immagine e del Thumbnail corrispondono non facciamo nulla.
    // quindi se l'immagine è quadrata...
    if (orgWidth != orgHeight)
    {
    // Se l'immagine non è quadrata
    // continuiamo a fare i nostri controlli per calcolarne le
    // giuste dimensioni e quindi creare la nostra nuova immagine con
    // l'aspectratio corretto.

    // Se l'immagine è più larga che alta
    if (orgWidth > orgHeight)
    {
    // L > H => L = tL
    // La larghezza del TN sarà quella da noi stabilita
    // quindi dobbiamo solo assegnarla.
    resw = resw;
    // L'altezza del TN invece dovrà essere ricalcolata
    // in proporzione alla larghezza dell'immagine originale.
    // L > H => tH = tL * (H / L)
    resh = ah * resw;
    } // if (tmporgWidth > tmporgHeight)
    else
    {
    // Altrimenti se l'immagine è più alta
    if (orgWidth < orgHeight)
    {
    // L < H => H = tH
    // L'altezza del TN sarà quella da noi stabilita
    // quindi dobbiamo solo assegnarla.
    resh = resh;
    // La larghezza del TN invece dovrà essere ricalcolata
    // in proporzione alla altezza dell'immagine originale.
    // L < H => tL = tH * (L / H)
    resw = aw * resh;
    } // if (orgWidth < orgHeight)
    } // else
    } // if (orgWidth != orgHeight)

    // assegnamo i valori calcolati alle nostre due variabili ed il gioco è fatto.
    newWidth = resw;
    newHeight = resh;
    } // void CalcolaAspectRatio(double orgWidth, double orgHeight, ref double newWidth, ref double newHeight)

    void UploadAndResizeAnImage(HttpPostedFile file, double newWidth, double newHeight, string virPath, bool overwrite)
    {
    string destPath = ".";
    double resWidth = 1.0;
    double resHeight = 1.0;
    bool owr = false;
    bool exist = false;

    if (virPath != "") destPath = virPath;
    if (newWidth > 0) resWidth = newWidth;
    if (newHeight > 0) resHeight = newHeight;

    if (overwrite)
    owr = true;
    else
    owr = false;

    int pathCheck = (destPath.Substring(destPath.LastIndexOf('/') + 1)).Length;
    if (pathCheck > 0) destPath += "/";

    string fileName = Path.GetFileName(file.FileName);
    string estensione = Path.GetExtension(file.FileName).ToLower();

    ImageCodecInfo[] imgCodec = ImageCodecInfo.GetImageEncoders();
    EncoderParameters encPars = new EncoderParameters(2);
    EncoderParameter encPar1 = new EncoderParameter( System.Drawing.Imaging.Encoder.Quality, 60L );
    EncoderParameter encPar2 = new EncoderParameter( System.Drawing.Imaging.Encoder.Compression, 60L );

    encPars.Param[0] = encPar1;
    encPars.Param[1] = encPar2;

    destPath = Server.MapPath(destPath);
    exist = File.Exists(destPath + fileName);

    if (!exist && (fileName.Length != 0) || owr)
    {
    if (!IsImage(fileName))
    {
    if (fileName.Length != 0)
    Status.Text += "<span style=\"color:Red;\">File '" + fileName + "' Non è un immagine valida</span>
    ";
    return;
    } // if (!IsImage(fileName))


    using(System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream))
    {
    CalcolaAspectRatio (image.Width, image.Height, ref resWidth, ref resHeight);

    using(Bitmap bitmap = new Bitmap((int)(resWidth), (int)(resHeight)))
    {
    string message = "Uploaded";

    bitmap.SetResolution(image.HorizontalResolution, image.VerticalResolution);

    Graphics g = Graphics.FromImage(bitmap);
    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    g.SmoothingMode = SmoothingMode.HighQuality;
    g.PixelOffsetMode = PixelOffsetMode.HighQuality;
    g.CompositingQuality = CompositingQuality.HighQuality;
    g.DrawImage(image, new Rectangle(0, 0, (int)(resWidth), (int)(resHeight)));
    g.Dispose();

    if (exist && owr)
    {
    message = "OverWritted";
    try
    {
    File.Delete(destPath + fileName);
    }
    catch(IOException ioe)
    {
    message = "<div id=\"error\">Error: " + ioe.GetType().Name + ": The write operation could not be performed because the specified part of the file is locked. Not OverWritted</div>";
    }
    } // if (exist && owr)

    if ((estensione == ".jpg") || (estensione == ".jpeg"))
    bitmap.Save(destPath + fileName, imgCodec[1], encPars);
    else
    bitmap.Save(destPath + fileName, image.RawFormat);

    Status.Text += "<span style=\"color:Green;\">File '" + fileName + " [" + (int)(image.Width) + "px X " + (int)(image.Height) + "px]' " + message + " dimensioni di salvataggio [" + (int)(resWidth) + "px X " + (int)(resHeight) + "px]</span>
    ";
    Response.Cookies["immagineupload"].Value = fileName;

    if (resWidth ==150)
    {
    Response.Redirect("closeupload.asp");
    }


    } // using(Bitmap bitmap = new Bitmap( (int)(resWidth), (int)(resHeight)))
    } // using(Image image = Image.FromFile(file))
    } // if (!exist && (fileName.Length != 0) || owr)
    else
    {
    if (exist && (!owr))
    Status.Text += "<span style=\"color:Red;\">Error : The file \"<u>" + fileName + "</u>\" already exist... Upload Aborted.</span>
    ";
    }
    } // void UploadAndResizeAnImage(HttpPostedFile file, double newWidth, double newHeight, string virPath, bool overwrite)

    protected void SubmitButton_Click(Object sender, EventArgs e)
    {
    HttpFileCollection uploadedFiles = Request.Files;

    for (int i = 0; i < uploadedFiles.Count; i ++)
    {
    // Qui sotto definisci le dimensioni che vuoi, la cartella di destinazione
    // e se l'applicazione deve sovrascrivere o no i files preesistenti.
    //
    // UploadAndResizeAnImage(HttpPostedFile file, double newWidth, double newHeight, string virPath, bool overwrite)
    //
    // Quindi se scrivo come qui sotto :

    UploadAndResizeAnImage(uploadedFiles[i], 500.0, 375.0, "./foto/", true);
    // significa che voglio che ogni immagine inviata (uploadedFiles[i])
    // venga ridimensionata a 1024x768 (tenendo conto però delle proporzioni originali)
    // e che se il file esiste non deve essere sovrascritto (overwrite = false).
    // Chiaro? Più di così

    // Vogliamo pure i Thumbnails??? allora aggiungiamo, sempre in questo ciclo for :
    UploadAndResizeAnImage(uploadedFiles[i], 150.0, 113.0, "./miniature/", true);
    // significa che voglio che ogni immagine inviata (uploadedFiles[i])
    // venga ridimensionata a 150x150 (tenendo conto però delle proporzioni originali)
    // e che se il file esiste non deve essere sovrascritto (overwrite = false).


    }


    } // protected void SubmitButton_Click(Object sender, EventArgs e)


    pagina.aspx :

    <%@ Page Language="C#" LCID=1040 Debug="true" Trace="false" %>
    <%@ Import Namespace="System" %>
    <%@ Import Namespace="System.IO" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Drawing" %>
    <%@ Import Namespace="System.Drawing.Imaging" %>
    <%@ Import Namespace="System.Drawing.Drawing2D" %>
    <%@ Import Namespace="System.Globalization" %>
    <%@ Import Namespace="System.Web.UI.HtmlControls" %>
    <LINK href="imag/styles.css" type=text/css rel=stylesheet>
    </head>
    <script Language="C#" runat="server" src="resonup.cs"></script>
    <html>
    <head>
    </head>
    <body>

    <div align="center">
    <form name="inviafile" id="inviafile" enctype="multipart/form-data" runat="server">
    Inserisci un immagine da visualizzare



    Seleziona File1:
    <input id="File1" type="file" class=formfield runat="Server" size="36"/>



    </p>
    <div align="center">
    <input id="Submit1" type="submit" value="Upload File" class=formfield runat="Server" onserverclick="SubmitButton_Click"/></div>



    <asp:Label id="Status" runat="server"></asp:Label>
    </form>
    </div>
    </body>
    </html>


    Come modificare lo script?
    Grazie anticipatamente...
    "AZIONE E MEDITAZIONE" se non pensi a quello che fai, come puoi fare quello che pensi?
    Arkiv - Software documentale http://www.lucagiardina.com/arkiv

  2. #2
    Stranamente manca qualcosa nello script...
    Richard B. Riddick : "Non avrete mica paura del buio?"

    Scusatemi ma sono mesi che non pago piu' la bolletta della luce....

  3. #3
    Cosa? Io lo trovato su google già così,ho solo aggiunto il salvataggio del cookie e i parametri della dimensione e della qualità e funziona.
    "AZIONE E MEDITAZIONE" se non pensi a quello che fai, come puoi fare quello che pensi?
    Arkiv - Software documentale http://www.lucagiardina.com/arkiv

  4. #4
    Originariamente inviato da Asa1458
    Cosa? Io lo trovato su google già così,ho solo aggiunto il salvataggio del cookie e i parametri della dimensione e della qualità e funziona.
    Forse se dai un'occhiata Qui e qui capisci...

    Mi passi la ricerca su google? Grazie!
    Richard B. Riddick : "Non avrete mica paura del buio?"

    Scusatemi ma sono mesi che non pago piu' la bolletta della luce....

  5. #5
    Ah...Ho capito...
    Cmq ho cercato " upload asp.net con ridimensionamento"
    ne ho trovati tantissimi,ora non ricordo però da dove l'ho scaricato,perchè ne ho scaricato tanti, acneh con il supporto ajax
    "AZIONE E MEDITAZIONE" se non pensi a quello che fai, come puoi fare quello che pensi?
    Arkiv - Software documentale http://www.lucagiardina.com/arkiv

  6. #6
    Comunque non preoccuparti non sono così maledetto come faccio credere
    In ogni caso mi farebbe piacere che, qualche altro bigotto, che ha rimosso i
    miei riferimenti dallo script li avesse lasciati... tutto qui

    Per il tuo problema la soluzione probabilmente c'è....
    ma è talmente macchinosa che penso non valga la pena di perdercisi più di tanto...

    Usa lo script e semplicemente metti da qualche parte la scritta di attendere la fine
    dell'esecuzione dell'applicazione.

    Io la uso sul mio sito e la uso solo io quindi non me ne può fregare di meno
    di avere una barretta o una scritta che mi ricorda di attendere... lo so e basta



    PS : dimenticavo la maggior parte degli script che visualizza una progress bar
    è in JavaScript.
    Richard B. Riddick : "Non avrete mica paura del buio?"

    Scusatemi ma sono mesi che non pago piu' la bolletta della luce....

  7. #7
    Grazie di tutto..
    "AZIONE E MEDITAZIONE" se non pensi a quello che fai, come puoi fare quello che pensi?
    Arkiv - Software documentale http://www.lucagiardina.com/arkiv

  8. #8
    Hai per caso qualche javascript a portata di mano?Quelle che ho io e che ho trovato non sono adattabili per questo lavoro,perchè mi calcolano il tempo di apertura dell'immagine e non il tempo di upload.
    "AZIONE E MEDITAZIONE" se non pensi a quello che fai, come puoi fare quello che pensi?
    Arkiv - Software documentale http://www.lucagiardina.com/arkiv

  9. #9
    No mi dispiace...

    ma è solo perchè non uso javascript
    Richard B. Riddick : "Non avrete mica paura del buio?"

    Scusatemi ma sono mesi che non pago piu' la bolletta della luce....

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.