none
Image Upload Hatası RRS feed

  • Soru

  • Arkadaşlar Merhaba bir sorum olacak 3 günden beri araştırıyorum çözemedim artık son noktaya geldi.

    Ürün resimlerini yükletirken boyutlandırma yapıyorum. Resmi seçip yükle butonuna tıklandıktan sonra, a generic error occurred in GDI+ hatası alıyorum.

    Dosya yazma izinlerine baktım bir problem yok. MIME Types'larıda kontrol ettim. Problem save komutundan kaynaklı sanırsam. Yardımlarınız için şimdiden teşekkürler.

      public static bool AddPhoto(FileUpload fu, out  string PhotoPath, int maxWidth)
            {
                PhotoPath = "";
    
                if (fu.HasFile)
                {
                    string tipi = fu.PostedFile.ContentType;
    
                    int boyutu = fu.PostedFile.ContentLength;
    
                    if (boyutu < 4000000 && (tipi == "image/gif" || tipi == "image/png" || tipi == "image/jpeg" || tipi == "image/pjpeg" || tipi == "image/bmp" || tipi == "image/x-png"))
                    {
                        string ad = Guid.NewGuid().ToString().Replace("-", "");
    
                        string uzanti = System.IO.Path.GetExtension(fu.FileName);
    
                        //fu.SaveAs(HttpContext.Current.Server.MapPath("~/UrunResimleri/" + ad + uzanti));
    
                        //PhotoPath = ad + uzanti;
                        SaveImageFile(fu, HttpContext.Current.Server.MapPath("images/pr/" + ad + uzanti), maxWidth);
                        PhotoPath = ad + uzanti;
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
    
            public static void SaveImageFile(string sourceImagePath, string saveImagePath, int maxImageWidth)
            {
                Bitmap bmp = new Bitmap(sourceImagePath);
                SaveImageFile(bmp, saveImagePath, maxImageWidth);
            }
    
            public static void SaveImageFile(FileUpload fu, string saveImagePath, int maxImageWidth)
            {
                Bitmap bmp = new Bitmap(fu.PostedFile.InputStream);
                SaveImageFile(bmp, saveImagePath, maxImageWidth);
            }
    
            public static void SaveImageFile(Bitmap sourceImage, string saveImagePath, int maxImageWidth)
            {
                if (sourceImage.Width > maxImageWidth)
                {
                    int newImageHeight = (int)(sourceImage.Height * ((float)maxImageWidth / (float)(sourceImage.Width)));
    
                    Bitmap resizedImage = new Bitmap(maxImageWidth, newImageHeight);
    
                    Graphics g = Graphics.FromImage(resizedImage);
    
                    g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                    g.SmoothingMode = SmoothingMode.AntiAlias;
                    g.SmoothingMode = SmoothingMode.HighQuality;
                    g.DrawImage(sourceImage, 0, 0, maxImageWidth, newImageHeight);
    
    
                    resizedImage.Save(saveImagePath, FileExtensionToImageFormat(saveImagePath));
    
                }
                else
                {
                    sourceImage.Save(saveImagePath, FileExtensionToImageFormat(saveImagePath));
                }
    
            }
    
            private static ImageFormat FileExtensionToImageFormat(String filePath)
            {
                string extension = Path.GetExtension(filePath).ToLower();
                ImageFormat result = ImageFormat.Jpeg;
                switch (extension)
                {
                    case ".gif":
                        result = ImageFormat.Gif;
                        break;
                    case ".png":
                        result = ImageFormat.Png;
                        break;
                    case ".bmp":
                        result = ImageFormat.Bmp;
                        break;
                }
                return result;
            }

    27 Ekim 2012 Cumartesi 12:26

Yanıtlar

  • Merhaba Toygun;

    Aldığın hatanın sebebi 

    SaveImageFile(fu, HttpContext.Current.Server.MapPath("images/pr/" + ad + uzanti), maxWidth);

    Metodu İçerisindeki SaveImageFile Metodunda kullandığın saveImagePath parametresi. Localhost'da dahi olsa images/pr klasörünün varlığından emin ol.

    Aynı kod bloğu benim makinamda çalışıyor.

    images klasörünün içine pr adında önceden bir klasör oluştur sorunun çözülecektir.

    Bu arada BreakPoint kullanmakdan çekinme F11 ile adım adım tüm basamaklar içinde gezinebilir hatanın nerden kaynaklandığını kestirebilirsin. Verdiğin kodları kendi makinamda deneyerek (Breakpoint ile) çözüme ulaştım.

    İyi Çalışmalar.


    Jesus Promised The End Of All Wicked People, ODIN Promised The End Of All Ice Giants. I Don't See Many Ice Giants Around... exe[nokta]cute[at]live[nokta]com

    27 Ekim 2012 Cumartesi 18:16