2012-07-02 2 views
1

я следующее кодирование, чтобы изменить размер изображения и чем сохранить его мою виртуальную папку «vicpic/scimages»Получения «Общая ошибка произошла в GDI +» при сохранении изображения в виртуальную папку на сервере ASP.NET

if (FileUpload5.PostedFile != null) 
    { 
     if (FileUpload5.PostedFile.ContentLength > (1024 * 1024)) 
     { 
      Label4.Text = "Upload status: The file has to be less than 1 MB. Please resize your photo and than upload it again."; 
     } 
     else 
     { 
      System.Drawing.Image imageToBeResized = System.Drawing.Image.FromStream(FileUpload5.PostedFile.InputStream); 
      int imageHeight = imageToBeResized.Height; 
      int imageWidth = imageToBeResized.Width; 
      int maxHeight = 660; 
      int maxWidth = 560; 
      imageHeight = (imageHeight * maxWidth)/imageWidth; 
      imageWidth = maxWidth; 
      if (imageHeight > maxHeight) 
      { 
       imageWidth = (imageWidth * maxHeight)/imageHeight; 
       imageHeight = maxHeight; 
      } 
      Bitmap bitmap = new Bitmap(imageToBeResized, imageWidth, imageHeight); 
      System.IO.MemoryStream stream = new MemoryStream(); 
      // bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); 
      stream.Position = 0; 
      byte[] image = new byte[stream.Length + 1]; 
      stream.Read(image, 0, image.Length); 

      string FileName = Path.GetFileName(FileUpload5.PostedFile.FileName); 
      //Save files to disk 
      string extension = Path.GetExtension(FileUpload5.PostedFile.FileName); 
      //Path.Combine(Server.MapPath("~/vicpic/scimages"), imageName); 
      string imagename = DropDownList2.SelectedItem.Text + "4" + extension; 


      bitmap.Save(Server.MapPath("~/vicpic/scimages/") + imagename); 

      bitmap.Dispose(); 
      imageToBeResized.Dispose(); 
      GC.Collect(); 



      try 
      { 
       con.Open(); 
       cmd.ExecuteNonQuery(); 
      } 

      catch (Exception ex) 
      { 
       Response.Write(ex.Message); 
      } 

      finally 
      { 
       con.Close(); 
       con.Dispose(); 
       Label4.Text = "Upload status:Successfully."; 

      } 
     } 

    } 

но он показывает общую ошибку в GDI +

может ли кто-нибудь предложить, где проблема?

Я хочу сохранить изображение в папке «vicpic/scimages» на моем хост-сервере. это виртуальный каталог, и я также предоставил все разрешения, необходимые для каталога.

+0

Пожалуйста, разместите полное сообщение об ошибке – HatSoft

+0

, это «vicpic/scimages» находится в папке httpdocs. – jackerj

+0

Может быть, у вас нет разрешения на запись/создание файла. – adatapost

ответ

4

У меня была та же проблема. Похоже, что поток памяти, в который был создан объект, должен быть открыт во время сохранения объекта. Не дублировать код и текст просто посмотрите на эту Q & A: A generic error occurred in GDI+, JPEG Image to MemoryStream

Так вместо bitmap.Save(Server.MapPath("~/vicpic/scimages/") + imagename); ваш код может выглядеть следующим образом:

using (var m = new MemoryStream()) 
{ 
     bitmap.Save(m, ImageFormat.Jpeg); 
     var img = Image.FromStream(m); 
     img.Save(Server.MapPath("~/vicpic/scimages/") + imagename); 
} 
+0

показывает ошибку в этой строке: var img = Image.FromStream (m); ниже ошибка: «System.Web.UI.WebControls.Image» не содержит определения для «FromStream» – jackerj

+0

Ошибка компиляции или выполнения? Какое сообщение об ошибке? –

+0

«System.Web.UI.WebControls.Image» не содержит определения для «FromStream» – jackerj

0

Я знаю, что это старый вопрос, но это просто мой вклад, который я хочу дать, если он может помочь кому-то с той же проблемой, то это все, что я хочу. Я получил эту ошибку на одном из моих веб-сайтов, и я понятия не имел, что происходит, поэтому, найдя ответы на STACK, я понял, что это ошибка разрешения. После исправления, что все в порядке, но затем я получил ту же ошибку на другом моем сайте, и я сразу же изменил разрешение на папку, как бы на этот раз это не исправить. После нескольких дней борьбы я понял, что проблема - это просто имя папки с орфографическими ошибками.

Смежные вопросы