C# 如何在ASP.NET中使用web服务在pc文件夹中保存图像?错误:GDI+中的一般错误;
我正在使用一个通过asp.net中的web服务保存图像的应用程序,但该应用程序引发异常,并显示以下消息: GDI中的一般错误+ 方法如下:C# 如何在ASP.NET中使用web服务在pc文件夹中保存图像?错误:GDI+中的一般错误;,c#,asp.net,web-services,visual-studio-2012,C#,Asp.net,Web Services,Visual Studio 2012,我正在使用一个通过asp.net中的web服务保存图像的应用程序,但该应用程序引发异常,并显示以下消息: GDI中的一般错误+ 方法如下: public class GuardaImagenes : System.Web.Services.WebService { [WebMethod] public string GuardarImagen(string image,string imageTitle,string ext) { string Imag
public class GuardaImagenes : System.Web.Services.WebService
{
[WebMethod]
public string GuardarImagen(string image,string imageTitle,string ext)
{
string ImageFolderPath = @"C:\Users\Andres\Pictures\ImagenesEvento\";
Image convertedImage = ConvertToImage(image);
try {
convertedImage.Save(ImageFolderPath+imageTitle+ext,ImageFormat.Jpeg);
return "true";
}catch(Exception ex){
return "false";
}
}
public Image ConvertToImage(string image) {
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(image);
using (var ms = new MemoryStream(imageBytes, 0,imageBytes.Length))
{
// Convert byte[] to Image
ms.Write(imageBytes, 0, imageBytes.Length);
Image img = Image.FromStream(ms, true);
return img;
}
}
}
我以Base64字符串传递图像,并使用ConvertToImage
方法将图像保存在计算机中的指定文件夹中
问题是,当我想要保存图像时,程序崩溃,无法处理它。
我已经读到使用
MemoryStream
更好,但是我不能正确地实现它。由于内存流关闭而发生错误。你可以参考
我已经找到了这个问题的解决方案,只需要使用该类编写所有图像字节 文件 这是我的最终代码:
[WebMethod]
public string SaveEventImage(string ImageByteArray, string ImageTitle)
{
try
{
byte[] bytes = Convert.FromBase64String(ImageByteArray);
File.WriteAllBytes(EVTImagePath + ImageTitle + ".jpg",bytes);
return "true";
}
catch
{
return "false";
}
}
您确定要创建的路径有效吗?另外,您没有处理
图像转换器图像。路径是正确的,我用另一个图像字符串测试了它,效果很好。哦,我不知道我必须处理它,谢谢@dai运行web服务的用户是否有权写入C:\Users\Andres\Pictures\imagesenesevento\
?对于IIS来说,这似乎是一个非常奇怪的文件夹。@ScottChamberlain是的,它有写权限
[WebMethod]
public string SaveEventImage(string ImageByteArray, string ImageTitle)
{
try
{
byte[] bytes = Convert.FromBase64String(ImageByteArray);
File.WriteAllBytes(EVTImagePath + ImageTitle + ".jpg",bytes);
return "true";
}
catch
{
return "false";
}
}