C# winfrom中webservice接口连接服务器上传图片并将照片保存到指定的路径的代码
时间: 2024-09-27 21:07:01 浏览: 31
在C# Winform中,如果你想要通过WebService接口连接服务器上传图片并将其保存到指定路径,你需要做以下几个步骤:
1. 创建WebService引用:
首先,在Visual Studio的工具箱里右键选择"添加WebReference",输入你的WebService地址,生成对应的Service类。
2. 引入所需命名空间:
```csharp
using System.Net;
using System.IO;
using YourWebServiceNamespace; // 替换为你生成的实际命名空间
```
3. 定义上传文件的方法:
```csharp
public bool UploadImage(Stream imageStream, string savePath)
{
try
{
// 创建一个HttpClient实例
using (var client = new HttpClient())
{
// 设置Content-Type为二进制数据
client.DefaultRequestHeaders.ContentType = MediaTypeHeaderValue.Parse("image/*");
// 创建一个Content对象,并设置图像流
MultipartFormDataContent formContent = new MultipartFormDataContent();
StreamContent streamContent = new StreamContent(imageStream);
streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
{
Name = "file",
FileName = Path.GetFileName(imageStream.Name) // 获取文件名
};
formContent.Add(streamContent);
// 发送POST请求
HttpResponseMessage response = await client.PostAsync("yourWebService/upload", formContent); // 替换为实际的WebService上传接口
// 检查响应状态码
if (response.IsSuccessStatusCode)
{
return true;
}
else
{
var content = await response.Content.ReadAsStringAsync();
throw new Exception($"Upload failed with status {response.StatusCode}: {content}");
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return false;
}
}
```
4. 使用方法上传图片并保存到本地:
```csharp
// 假设你有一个FileStream类型的变量imgFileStream存储图片
if (imgFileStream != null)
{
byte[] buffer = new byte[imgFileStream.Length];
imgFileStream.Read(buffer, 0, buffer.Length);
imgFileStream.Close();
// 上传图片
bool success = UploadImage(new MemoryStream(buffer), @"C:\SavePath\YourFileName.jpg"); // 替换为你要保存图片的具体路径
if (success)
{
Console.WriteLine("Image uploaded successfully.");
}
else
{
Console.WriteLine("Failed to upload the image.");
}
}
```
阅读全文