Avatar billede sjebber Nybegynder
08. september 2009 - 10:23 Der er 1 kommentar

Validere format i image upload

God formiddag alle eksperter. Jeg er i min skole ved at lave et Billedeupload som også skalere billedet. Indtil videre virker det perfekt.
Men den kan bare ikke li' at jeg uploader andet end JPeg :(

public partial class _Default : System.Web.UI.Page
{
    private string savepath = "~/Images/";
    private string original = HttpContext.Current.Request.PhysicalApplicationPath + "/Images/";
    private string thumb = HttpContext.Current.Request.PhysicalApplicationPath + "/Images/Thumb/";


    protected void Page_Load(object sender, EventArgs e)
    { }

    private System.Drawing.Image Scale(System.Drawing.Image image, int maxSizeWidthOrHeigh)
    {
        int w = image.Width;
        int h = image.Height;

        if (w > h)
        {
            w = maxSizeWidthOrHeigh;
            h = image.Height * maxSizeWidthOrHeigh / image.Width;
        }
        else
        {
            w = image.Width * maxSizeWidthOrHeigh / image.Height;
            h = maxSizeWidthOrHeigh;
        }

        using (Bitmap bm = new Bitmap(w, h))
        {
            using (Graphics gr = Graphics.FromImage((System.Drawing.Image)bm))
            {
                gr.InterpolationMode = InterpolationMode.HighQualityBicubic;
                gr.DrawImage(image, 0, 0, w, h);
            }
            try
            {
                return (System.Drawing.Image)bm.Clone();
            }
            finally
            {
                bm.Dispose();
            }
        }
    }


    private void saveAsThumbnail(string original, string thumb, int maxSize)
    {
        System.Drawing.Image originalImg = System.Drawing.Image.FromFile(original);

        using (System.Drawing.Image thumbImg = (System.Drawing.Image)Scale(originalImg, maxSize))
        {
            thumbImg.Save(thumb, ImageFormat.Jpeg);
            thumbImg.Dispose();
            originalImg.Dispose();
        }
    }

    protected void Button_upload_Click(object sender, EventArgs e)
    {
        if (FileUpload_default.HasFile)
        {
            string filename = FileUpload_default.FileName;
            string savename = Server.MapPath(savepath) + filename;



            FileUpload_default.SaveAs(Request.PhysicalApplicationPath + "/Images/" + FileUpload_default.FileName);
            saveAsThumbnail(Request.PhysicalApplicationPath + "/Images/" + FileUpload_default.FileName, Request.PhysicalApplicationPath + "/Images/Thumb/" + FileUpload_default.FileName, Convert.ToInt32(textSize.Text));

            LinkThumb.Text = "Se Thumb";
            LinkThumb.NavigateUrl = "~/Images/Thumb/" + filename;

            LinkImage.Text = "Se Image";
            LinkImage.NavigateUrl = "~/Images/" + filename;

        }
        else
        {
            Response.Write("Vedhæft en fil for at fortage et upload!");
        }
}
Avatar billede aaberg Nybegynder
08. september 2009 - 12:45 #1
Den kode du viser herover vil kun virke, så længe web-siden ligger på din lokale computer. Lige så snart du får den op på en server, vil det fejle.

Problemet er, at alt din C# kode vil blive eksekveret på serveren. Når du loader et billede, bruger du FromFile() metoden. FromFile() metoden tager et filnavn ind som parameter, problemet er at dette filnavn henviser til en fil som ligger på klient computeren (Altså ham som er inde på hjemmesiden). Serveren har ingen tilgang til klienterne.

Derfor virker ikke din kode.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester