gpt4 book ai didi

c# - 如何将 zip 文件发送到 ASP.NET WebApi

转载 作者:太空狗 更新时间:2023-10-29 20:13:34 33 4
gpt4 key购买 nike

我想知道如何将 zip 文件发送到 WebApi Controller ,反之亦然。问题是我的 WebApi 使用 json 来传输数据。 zip 文件不可序列化,也不是流。字符串将是可序列化的。但是除了将 zip 转换为字符串并发送字符串之外,还必须有其他解决方案。这听起来不对。

知道这是怎么做到的吗?

最佳答案

如果您的 API 方法需要 HttpRequestMessage,那么您可以从中提取流:

public HttpResponseMessage Put(HttpRequestMessage request)
{
var stream = GetStreamFromUploadedFile(request);

// do something with the stream, then return something
}

private static Stream GetStreamFromUploadedFile(HttpRequestMessage request)
{
// Awaiting these tasks in the usual manner was deadlocking the thread for some reason.
// So for now we're invoking a Task and explicitly creating a new thread.
// See here: http://stackoverflow.com/q/15201255/328193
IEnumerable<HttpContent> parts = null;
Task.Factory
.StartNew(() => parts = request.Content.ReadAsMultipartAsync().Result.Contents,
CancellationToken.None,
TaskCreationOptions.LongRunning,
TaskScheduler.Default)
.Wait();

Stream stream = null;
Task.Factory
.StartNew(() => stream = parts.First().ReadAsStreamAsync().Result,
CancellationToken.None,
TaskCreationOptions.LongRunning,
TaskScheduler.Default)
.Wait();
return stream;
}

当使用 enctype="multipart/form-data" 发布 HTTP 表单时,这对我有用。

关于c# - 如何将 zip 文件发送到 ASP.NET WebApi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22176147/

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