将图像保存到IIS localhost中的文件夹

时间:2013-08-22 11:23:38

标签: c# .net iis localhost image-uploading

我必须将图像保存到位于“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目录中的图像进行哪些更改?

3 个答案:

答案 0 :(得分:0)

你不会相信这一点 - 运行v1.1的网站有一个虚拟目录设置,它被映射到保存图像的目录 - 事情很好。

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

所以简而言之 - 你对“必须存在的道路”是正确的。

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

并请参考此链接

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

答案 1 :(得分: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中存在你的图像文件夹,那么你应该创建   虚拟目录,然后您需要将路径应用为相关

答案 2 :(得分:0)

我的问题实际上是每次我发布网站时,我都替换了“UploadedImages”文件夹,因此更改了权限。因此,在更改其权限并创建“everyone”组并授予其完全权限后,我没有再次替换该文件夹。现在代码工作正常:)