0

fileuploadコントロールを使用して、ユーザーがアップロードした画像のサイズを変更してフォルダーに保存しようとしています。しかし、bmp.save(..)では、この例外が発生します。

例外タイプ:System.Runtime.InteropServices.ExternalException

エラーメッセージ:GDI+で一般的なエラーが発生しました。

スタックトレース:System.Drawing.Image.Save(String filename、ImageCodecInfoエンコーダー、EncoderParametersエンコーダーParams)at btnUpload_Click(Object sender、EventArgs e)

これが私のコードです

   If fileUpload1.HasFile Then
        Dim flStream = fileUpload1.FileContent
        Dim imgMemStream = New MemoryStream

        imgMemStream.SetLength(flStream.Length)
        flStream.Read(imgMemStream.GetBuffer, 0, flStream.Length)

        imgMemStream.Flush()
        flStream.Close()

        Dim imgStream = System.Drawing.Image.FromStream(imgMemStream)
        Dim bmp = New Bitmap(200, 200)
        Dim gr = Graphics.FromImage(bmp)
        gr.DrawImage(imgStream, 0, 0, 200, 200)

        If System.IO.Directory.Exists(Server.MapPath("ProfilePics\")) Then
            bmp.Save(Server.MapPath("ProfilePics\" & employeeId & ".jpg"), Drawing.Imaging.ImageFormat.Jpeg)
        Else
            Throw New Exception("Path not found")
        End If

        imgStream.Dispose()
        bmp.Dispose()
        gr.Dispose()

        Response.Redirect(Me.Request.Url.AbsolutePath) 
End If

また、iis_wpgにそのフォルダーのフルコントロールを与えてみました。

どんな助けでも大歓迎です。

4

1 に答える 1

0

それは私には許可の問題のように聞こえます(あなたはそれを調査し始めたようです)。NETWORK SERVICEにそのフォルダへの書き込みを許可してみましたか?

それでも問題が解決しない場合は、そのフォルダーにテキストファイルを書き込んで、それがアクセス許可であるかどうかを確認してください。これらのメソッドでは、より適切なエラーが発生するはずです。IISでは、ファイルシステムとIISの両方で書き込み権限も有効にする必要がある場合があることを思い出しているようですが、それは古い情報である可能性があります。

于 2012-09-06T20:49:22.653 に答える