0

我必须将图像保存到位于“c:\inetpub\wwwroot\”并命名为“UploadedImages”的文件夹中。这是我的代码:

         public string SaveImage(string base64,int compno)
{
    string res = "";
    try
    {

        using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(base64)))
        {
            using (Bitmap bm2 = new Bitmap(ms))
            {
                bm2.Save(Server.MapPath("~/UploadedImages/ID"+compno+".jpg"));
            }
        }
        res = "done";
    }
    catch (Exception ex) {
        res = ex.ToString();
    }
    return res;
}

但它会引发“在 System.Drawing.Image.Save 的 GDI+ 中发生一般错误”异常。我究竟做错了什么?此代码在本地保存图像时工作正常

       bm2.Save("D:Embasy\UploadedImages\ID"+compno+".jpg"));

我需要进行哪些更改才能将图像保存在 localhost 目录中?

4

3 回答 3

0

我的问题实际上是每次我发布网站时,我也替换了“UploadedImages”文件夹,因此权限被更改。因此,在更改其权限并创建“每个人”组并授予其完全权限后,我没有再次替换该文件夹。现在代码运行良好:)

于 2013-08-22T12:14:21.517 回答
0

你不会相信这一点——运行 v1.1 的站点有一个虚拟目录设置,它映射到保存图像的目录——一切正常。

v2.0 站点也具有相同的虚拟目录名称,但物理路径不同——我将路径更改为指向与 v1.0 站点相同的目录,现在代码可以工作了。

简而言之-您对“路径必须存在”是正确的。

不支持在 Windows 或 ASP.NET 服务中使用 System.Drawing 命名空间中的类。尝试从这些应用程序类型之一中使用这些类可能会产生意想不到的问题,例如服务性能下降和运行时异常。有关受支持的替代方法,请参阅 Windows 映像组件。

并请参考此链接

http://msdn.microsoft.com/en-us/library/xs6ftd89.aspx

于 2013-08-22T11:30:50.097 回答
0

当您使用Server.Mappath

bm2.Save(Server.MapPath("~/UploadedImages/ID"+compno+".jpg"));

"~(tield)":指向项目/应用程序根文件夹c:\inetpub\wwwroot\yourproject

然后找到剩余的路径/UploadedImages,然后创建 ID1.jpg。

但是您的图像文件夹“UploadImages”存在于 d:中而不是 c:\inetpub\wwwroot\yourproject

如果你想在 D: 中存在你的图像文件夹,那么你应该创建虚拟目录,然后你需要应用相关的路径

于 2013-08-22T12:03:12.863 回答