使用WebClient将图像数据发送到服务器的最佳方式
本文关键字:服务器 最佳 方式 WebClient 图像 数据 使用 | 更新日期: 2023-09-27 18:29:12
我正在使用Webclient尝试将我在winform应用程序上获得的图像发送到中央服务器。然而,我以前从未使用过WebClient,我很确定我所做的是错误的。
首先,我将我的图像存储并显示在我的表单上,如下所示:
_screenCap = new ScreenCapture();
_screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;
capturedImage = imjObj;
imagePreview.Image = capturedImage;
我已经设置了一个事件管理器,每当我截屏时都会更新我的imagePreview图像。然后在状态发生变化时显示,如下所示:
private void _screen_CapOnUpdateStatus(object sender, ProgressEventArgs e)
{
imagePreview.Image = e.CapturedImage;
}
有了这个图像,我正试图将其传递给我的服务器,如下所示:
using (var wc = new WebClient())
{
wc.UploadData("http://filelocation.com/uploadimage.html", "POST", imagePreview.Image);
}
我知道我应该将图像转换为byte[],但我不知道如何做到这一点。有人能告诉我正确的方向吗?
您可以像这个一样转换为byte[]
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
如果你有图像的路径,你也可以做这个
byte[] bytes = File.ReadAllBytes("imagepath");
这可能会帮助您。。。
using(WebClient client = new WebClient())
{
client.UploadFile(address, filePath);
}
由此引用。
您需要将ContentType
标头设置为image/gif
或可能的binary/octet-stream
的标头,并在图像上调用GetBytes()
。
using (var wc = new WebClient { UseDefaultCredentials = true })
{
wc.Headers.Add(HttpRequestHeader.ContentType, "image/gif");
//wc.Headers.Add("Content-Type", "binary/octet-stream");
wc.UploadData("http://filelocation.com/uploadimage.html",
"POST",
Encoding.UTF8.GetBytes(imagePreview.Image));
}