GDI +中发生的“通用”错误正在扼杀我

时间:2012-09-06 20:30:35

标签: asp.net vb.net file-upload iis-7

我正在尝试使用fileupload控件调整大小并将用户上传的图像保存在文件夹中。但是在bmp.save(..)上,我得到了这个例外。

异常类型:System.Runtime.InteropServices.ExternalException

错误消息:GDI +中发生了一般错误。

堆栈跟踪:在System.Drawing.Image.Save(String filename,ImageCodecInfo encoder,EncoderParameters encoderParams)    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完全控制。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这听起来像是一个权限问题(你已经开始调查它听起来像)。您是否尝试过授予NETWORK SERVICE权限以写入该文件夹?

如果这不起作用,请尝试将文本文件写入该文件夹以确定它是否是权限,您应该使用这些方法获得更好的错误。我似乎记得在IIS中,有时您还需要在文件系统和IIS中启用写入权限,但这可能是过时的信息。