2013-08-22 211 views
0

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

  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; 
} 

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

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

我需要做些什么更改才能将图像保存到localhost目录中?

+0

检查这是否有帮助http://stackoverflow.com/questions/7438194/gdi-error-when-uploading-images-to-server-but-not-localhost?rq= 1 – Steve

+0

不,它没有帮助我,因为我没有使用任何goDAddy帐户,甚至不知道它是什么 –

+0

这不是关于godaddy(互联网服务提供商),而是关于System.Drawing类。 – Steve

回答

0

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

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

所以总之 - 你说的“必须存在的道路”是正确的。

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

和好心当您使用使用Server.Mappath

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

“〜(tield)”指该链接

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

+0

所以我不能在服务中使用它,但是我可以在我的网站的网页中使用这种方法吗?我的意思是使用aspx页面?此方法没有任何问题将图像保存在本地磁盘“D”上。那是不一样的? –

+0

是的,你可以保存。请参考我的答案为d: – MSTdev

0

:被点到的项目/应用根文件夹c:\ inetpub \ wwwroot \ yourproject

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

但你imagefolder “UploadImages” 是存在d:不是在C:\的Inetpub \ wwwroot的\ yourproject

,如果你想有你的图像文件夹中的d:那么你应该到创建 虚拟目录,然后你需要申请路径相关

+0

我的文件夹不存在于“C”中。我在“D”中创建了另一个具有相同名称的文件夹来检查此代码bm2.Save(“D:Embasy \ UploadedImages \ ID”+ compno +“。jpg”)); –

+0

好吧,现在它工作正常? – MSTdev

+0

是的,它现在工作的很好 –

0

我的问题实际上是,每次我发布网站的时候,我又以“UploadedImages”文件夹过,因此权限发生了变化。因此,在更改权限并创建“所有人”组并给予其完整权限后,我没有再次替换该文件夹。现在代码工作完美:)

相关问题