2017-09-22 4 views
1

사용자가 일부 이미지를 업로드 할 수있는 웹 사이트에서 작업하고 있습니다.스트림에서 이미지를로드하고 저장하면 "GDI +에서 일반 오류가 발생했습니다."

public async Task<ActionResult> Create(Advert advert, HttpPostedFileBase FileURL)

내가 fileName 내가 무작위로 생성 매개 변수입니다 FileURL.SaveAs(HttpContext.Server.MapPath(fileName))를 사용하여 이미지를 저장할 수 있으며, 모든 것이 작동 : 그리고 업로드 된 이미지 여기

를 얻을 수 HttpPostedFileBase를 사용하고있어 작업 헤더입니다 아주.

지금 내 이미지에 대한 썸네일을 생성 할, 그래서 다음 방법 작성 :

public static void SaveJpeg(string path, HttpPostedFileBase uploadedFile, int quality) 
    { 
     if (quality < 0 || quality > 100) 
      throw new ArgumentOutOfRangeException("quality must be between 0 and 100."); 

     // Encoder parameter for image quality 
     EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality); 
     // JPEG image codec 

     ImageCodecInfo codec = GetEncoderInfo("image/jpeg"); 
     EncoderParameters encoderParams = new EncoderParameters(1); 
     encoderParams.Param[0] = qualityParam; 
     Image img = Image.FromStream(uploadedFile.InputStream); 
     var thumbnail = img.GetThumbnailImage(img.Width/5, img.Height/5, null, IntPtr.Zero); 
     //img.Save(path, codec, encoderParams); 
     thumbnail.Save(path, codec, encoderParams); 
    } 

을하지만, 썸네일에게

PS를 저장할 때 내가 A generic error occured in GDI+ 오류를 받고 있어요 : 내 코드를 테스트 메소드에 Image을 전달하면 모든 것이 잘 작동합니다.

도와주세요.

+0

내가 그 기능을 사용하지,하지만 결코 한 MSDN의 문서 [말] (https://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage (V = vs.110) .aspx)에서 "callback"이 필요합니다. "대리자를 만들어야하고 대리자에 대한 참조를 콜백 매개 변수로 전달해야하지만 대리자는 사용되지 않습니다." 어떤 경우에는 'null'을 전달하는 것이 문제가 될 수 있습니다. –

+0

MSDN의 "주의"섹션으로 이동하십시오 (https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspx). Microsoft는 ASP.NET에서 이러한 클래스 사용을 지원하지 않습니다. 타사 솔루션을 사용해야합니다. –

답변

0

: 사전에

덕분에 이미이 설정 한 수 있지만, 권한이 저장중인 디렉토리에 올바르게 설정되지 않은 경우 이런 종류의 오류가 발생할 수 있습니다. 기본적으로 IIS의 사이트에는 IIS 디렉터리에 쓸 수있는 권한이 없습니다. 기본 사용자는 IIS_IUSRS이며 문제가있는 경우 Modify 액세스 권한이 필요합니다.

enter image description here

+0

필자는 FileURL.SaveAs (HttpContext.Server.MapPath (fileName))를 사용하여 같은 디렉토리에 이미지를 저장할 수 있었기 때문에 이런 경우는 아니라고 생각합니다. –

관련 문제