gpt4 book ai didi

ASP.NET : A generic error occurred in GDI+

转载 作者:行者123 更新时间:2023-12-02 14:22:16 28 4
gpt4 key购买 nike

我创建了一个 asp.net 4.0 Web 应用程序,它具有用于上传图像的 Web 服务。我通过将 Base64 字符串形式的图像从我的移动应用程序发送到网络服务来上传图像。

以下是我的代码:

public string Authenticate(string username, string password, string fileID, string imageData)
{
Dictionary<string, string> responseDictionary = new Dictionary<string, string>();
bool isAuthenticated = true; // Set this value based on the authentication logic

try
{
if (isAuthenticated)
{
UploadImage(imageData);

string result = "success";
var message = "Login successful";

responseDictionary["status"] = result;
responseDictionary["message"] = message;
}
}
catch (Exception ex)
{

responseDictionary["status"] = ex.Message;
responseDictionary["message"] = ex.StackTrace;
}

return new JavaScriptSerializer().Serialize(responseDictionary);
}

private void UploadImage(string uploadedImage)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(uploadedImage);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

System.Drawing.Bitmap bitmap = (System.Drawing.Bitmap)Image.FromStream(ms);

string uploadPath = Server.MapPath("..\\uploads\\") + DateTime.Now.Ticks.ToString() + ".jpeg";
ms.Close();

bitmap.Save(uploadPath, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose();
}

这段代码在我的本地 ASP.NET 开发服务器上运行良好,我能够在我的“uploads”目录中看到上传的图像。但是,将代码传输到 FTP 目录后,我现在收到以下错误:

GDI+ 中发生一般错误

我通过创建一个虚拟的 .aspx 页面并在 page_load 上创建一个文本文件来检查上传目录是否具有适当的权限,并且它工作正常。

即使在进行谷歌搜索后,我也无法解决这个问题。有人可以帮我解决这个问题吗?

提前非常感谢。

最佳答案

不要直接写入文件,而是将位图保存到MemoryStream,然后将流的内容保存到磁盘。这是一个古老的已知问题,坦率地说,我不记得为什么会这样的所有细节。

 MemoryStream mOutput = new MemoryStream();
bmp.Save( mOutput, ImageFormat.Png );
byte[] array = mOutput.ToArray();

// do whatever you want with the byte[]

就你的情况而言,可能是

private void UploadImage(string uploadedImage)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(uploadedImage);

string uploadPath = Server.MapPath("..\\uploads\\") + DateTime.Now.Ticks.ToString() + ".jpeg";

// store the byte[] directly, without converting to Bitmap first
using ( FileStream fs = File.Create( uploadPath ) )
using ( BinaryWriter bw = new BinaryWriter( fs ) )
bw.Write( imageBytes );
}

private void UploadImage(string uploadedImage)
{
// Convert Base64 String to byte[]
byte[] imageBytes = Convert.FromBase64String(uploadedImage);
MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

System.Drawing.Bitmap bitmap = (System.Drawing.Bitmap)Image.FromStream(ms);

string uploadPath = Server.MapPath("..\\uploads\\") + DateTime.Now.Ticks.ToString() + ".jpeg";
ms.Close();

// convert to image first and store it to disk
using ( MemoryStream mOutput = new MemoryStream() )
{
bitmap.Save( mOutput, System.Drawing.Imaging.ImageFormat.Jpeg);
using ( FileStream fs = File.Create( uploadPath ) )
using ( BinaryWriter bw = new BinaryWriter( fs ) )
bw.Write( mOutput.ToArray() );
}
}

关于ASP.NET : A generic error occurred in GDI+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698737/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com