当前位置: 首页 > 面试题库 >

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

卫念
2023-03-14
问题内容

我想知道如何将zip文件发送到WebApi控制器,反之亦然。问题是我的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;
}

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



 类似资料:
  • 我试图弄清楚如何从给定的文件夹路径创建新的zip文件,并将其发送回发件人。 需要的是,该文件将在请求它的发件人处下载。我已经看到了很多答案,但没有一个能帮我找到准确的答案。 我的代码: Guid folderGuid=Guid。NewGuid();string folderToZip=ConfigurationManager。AppSettings[“folderToZip”]folderGuid

  • 问题内容: 我有一个Flask服务器,它从数据库中获取几个不同文件的二进制数据,并将它们放入python’zipfile’对象中。我想使用flask的“ send_file”方法将生成的zip文件与我的代码一起发送。 我最初能够通过使用BytesIO(bin)作为send_file的第一个参数来成功发送非zip文件,但是由于某些原因,我无法对生成的zip文件执行相同的操作。它给出了错误: ‘Zip

  • 问题内容: 我知道Mule使用元素对数据的gzip压缩提供了极大的支持。但是客户端现在需要zip压缩,因为该文件必须作为zip压缩文件放在FTP上:( 在以下情况下,我在m子中遇到困难: 我创建了一个Spring bean,其中包含文件。我想使用ZipOutputStream类压缩此文件,并将其传递给我们的ftp。 这是我的流程配置: 这是我的zipCompressor的代码: 我编写了一个单元测

  • 问题内容: 我想创建.zip文件,其中包含我从后端收到的压缩文件,然后将此文件发送给用户。两天来我一直在寻找答案,找不到合适的解决方案,也许你可​​以帮我:) 现在,代码是这样的:(我知道我不应该在spring控制器中做所有的事情,但是不要在意,它只是出于测试目的,找到使其工作的方法) 但是问题是,当我输入URL:localhost:8080 / zip时,使用代码得到的文件是:test.zip.

  • 问题内容: 我正在尝试将一些文件添加到ZIP文件中,它会创建文件,但不会在其中添加任何内容。代码1: 我的功能: 编辑: 我发现了问题,只是在将文件从C:\驱动器写入F:\驱动器的ZIP时遇到麻烦 问题答案: 您不能压缩文件夹,只能压缩文件。要压缩文件夹,必须手动添加所有子文件。我写了本课来完成这项工作。您可以免费获得它:) 用法是这样的: 这是课程: 请享用! 编辑 :要检查程序是否仍在忙,可以

  • 我正在尝试使用Vertx上传一个文件,该请求是一个包含PDF的POST请求,我的处理程序如下所示(我从github中的一个示例中获取了代码): 根据上面的评论,我不能只尝试这样的事情(它实际上显示了一个错误): 我一直在检查MessageCodec,但我不清楚如何将其应用于这种情况。 注意:此escenario必须使用eventbus。