2017-09-22 4 views
1

私はユーザーが画像をアップロードできるWebサイトで作業しています。そして、私はここでアップロードされた画像ストリームから画像を読み込んで保存すると「GDI +で一般的なエラーが発生しました」

を取得するためにHttpPostedFileBaseを使用していることはアクションヘッダーです:

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

私はfileNameは私がランダムに生成するパラメータであり、すべてが動作しているFileURL.SaveAs(HttpContext.Server.MapPath(fileName))を使用して画像を保存することができます完全に。

今、私は私の画像のサムネイルを生成したいので、私は次の方法で書きました:

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のドキュメントには、V =(https://msdn.microsoft.com/en-us/library/system.drawing.image.getthumbnailimage([言います] vs.110).aspx)で、コールバックは必須です: "デリゲートを作成してデリゲートへの参照をコールバックパラメータとして渡す必要がありますが、デリゲートは使用されません。場合によっては、「ヌル」を渡すことが問題になることがあります。 –

+0

MSDNの「注意」セクションまでスクロールし、https://msdn.microsoft.com/en-us/library/system.drawing(v=vs.110).aspxを参照してください。マイクロソフトでは、ASP.NETでこのようなクラスの使用をサポートしていません。サードパーティのソリューションを使用する必要があります。 –

答えて

0

あなたはすでにこれを設定しているかもしれないが、許可があなたに保存されているディレクトリに正しく設定されていない場合にはこの種のエラーが発生する可能性があります。既定では、IISのサイトにはIISディレクトリに書き込む権限がありません。デフォルトのユーザーはIIS_IUSRSであり、これが問題の場合はModifyアクセス権が必要になります。

enter image description here

+0

私は 'FileURL.SaveAs(HttpContext.Server.MapPath(fileName)) 'を使って同じディレクトリに画像を保存することができたので、これは当てはまりません。 –

関連する問題