首页 > 解决方案 > 使用 Web 服务发送 zip 文件

问题描述

我使用 .NET Web API 创建了一个 Web 服务。Web 服务部分效果很好,我可以使用 Advanced REST Client 发送 zip 文件。问题是我无法以编程方式发送 zip 文件。这是高级 REST 客户端请求标头:

在此处输入图像描述

我尝试了一些事情但没有成功。考虑到这是 Web 开发人员(我是桌面开发人员)的基本内容,我没有发布我尝试过的内容,但如果有必要,我会的。先感谢您。

编辑:这是我最近的版本

private async void BeginUpdate(bool webserverStatus)
{
    if (!webserverStatus) return;

    var httpClient = new HttpClient();
    var form = new MultipartFormDataContent();
    var byteArray = File.ReadAllBytes("myUpdatePackage.zip");

    form.Add(new ByteArrayContent(byteArray, 0, byteArray.Length), "myUpdatePackage", "myUpdatePackage.zip");
    HttpResponseMessage response = await httpClient.PostAsync(@"http://localhost:9000/api/file/", form);
    response.EnsureSuccessStatusCode();
    httpClient.Dispose();

    string sd = response.Content.ReadAsStringAsync().Result;
}

标签: c#file-uploadmultipartform-datawebservice-client

解决方案


我意识到在 Advanced REST Client 上,我使用的是 PUT,同时在我的 C# 应用程序中,我使用 POST 调用它

HttpResponseMessage response = await httpClient.PostAsync(@"http://localhost:9000/api/file/", form);

所以,这里是完整的代码:

private async void BeginUpdate(bool webserverStatus)
{
    if (!webserverStatus) return;

    var byteArray  = File.ReadAllBytes("myUpdatePackage.zip");
    var httpClient = new HttpClient();
    var form       = new MultipartFormDataContent();

    form.Add(new ByteArrayContent(byteArray, 0, byteArray.Length), "myUpdatePackage", "myUpdatePackage.zip");
    HttpResponseMessage response = await httpClient.PutAsync(@"http://localhost:9000/api/file/", form);

    response.EnsureSuccessStatusCode();
    httpClient.Dispose();
    string sd = response.Content.ReadAsStringAsync().Result;
}

关于这个问题的更多细节


推荐阅读