我必须将图像保存到位于“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目录中的图像进行哪些更改?
答案 0 :(得分:0)
你不会相信这一点 - 运行v1.1的网站有一个虚拟目录设置,它被映射到保存图像的目录 - 事情很好。
v2.0站点也有相同的虚拟目录名,但物理路径不同 - 我将路径更改为指向与v1.0站点相同的目录,现在代码正常工作。
所以简而言之 - 你对“必须存在的道路”是正确的。
不支持在Windows或ASP.NET服务中使用System.Drawing命名空间中的类。尝试在其中一种应用程序类型中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常。有关支持的替代方法,请参阅Windows Imaging Components。
并请参考此链接
答案 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”组并授予其完全权限后,我没有再次替换该文件夹。现在代码工作正常:)