将文件上传到Web服务而不保存到服务器,数据库或本地

用户名

我正在创建一个Web服务,该服务将允许用户上传文件,然后对文件进行一些更改并返回文件。但是我想获取该文件内容而不将其保存到服务器,数据库或本地。相反,我想将内容保存到流或类似内容中,以便随后可以对其内容进行修改并返回新文件。

我尝试执行以下操作,但是只能弄清楚如何使它在本地上传和保存。当前,文件信息是从表单数据和文件头中收集的。

    namespace FileConverter.Controllers
{
    [RoutePrefix("api/test")]
    public class FileUploadController : ApiController
    {
        private static readonly string ServerUploadFolder = "C:\\Temp"; //Path.GetTempPath();

        [Route("files")]
        [HttpPost]
        [ValidateMimeMultipartContentFilter]
        public async Task<FileResult> UploadSingleFile()
        {
            var streamProvider = new MultipartFormDataStreamProvider(ServerUploadFolder);
            await Request.Content.ReadAsMultipartAsync(streamProvider);

            return new FileResult
            {
                FileNames = streamProvider.FileData.Select(entry => entry.LocalFileName),
                Names = streamProvider.FileData.Select(entry => entry.Headers.ContentDisposition.FileName),
                ContentTypes = streamProvider.FileData.Select(entry => entry.Headers.ContentType.MediaType),
            };
        }
    }
}

我使用ValidateMimeMultipartContentFilter属性检查是否发送了正确的MIME类型。

namespace FileConverter.Controllers
{
    public class ValidateMimeMultipartContentFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            if (!actionContext.Request.Content.IsMimeMultipartContent())
            {
                throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
            }
        }

        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {

        }

    }
}

然后,我建立了一个模型来存储一些数据。

namespace FileConverter.Controllers
{
    public class FileResult
    {
        public IEnumerable<string> FileNames { get; set; }
        public IEnumerable<string> ContentTypes { get; set; }
        public IEnumerable<string> Names { get; set; }
    }
}

有什么方法可以在不将文件保存到本地然后读取其内容的情况下以Stream / byte []的形式获取文件的内容吗?如果是这样,我将如何去做?

脱衣战士

在调用表单操作时,ASP.NET已经做出了很多神奇的操作来解释文件上传,因此您实际上无法在操作本身中做很多事情。但是,您可以使用HttpModule或HttpHandler捕获字节流形式的多段形式的字节流。

这个例子似乎是一个很好的起点。

我不知道HttpRequest是否可以在接收到有效负载之后才开始返回数据,因此,如果您确实想“流式传输”过滤过程,那么这可能将需要一些疯狂的交叉请求魔术。另一方面,如果您打算在处理整个文件时将其保存在内存中,然后再发送回去,那么我建议您最好允许MVC将文件另存为临时文件: d将整个上载的文件保存在内存中时,可能会导致性能下降。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文件上传到Web服务而不保存到服务器,数据库或本地

来自分类Dev

将照片上传到数据库(到服务器而不是本地主机)

来自分类Dev

将站点上传到Web服务器后无法将数据插入数据库

来自分类Dev

如何将本地数据从服务器数据库保存到本地数据库?

来自分类Dev

如何将sqlite3数据库上传到Web服务器?

来自分类Dev

将图像上传到服务器的最佳方法是什么?保存在数据库还是服务器文件夹中?

来自分类Dev

将多个文件上传到服务器并将路径复制到数据库

来自分类Dev

将大型数据库文件上传到服务器

来自分类Dev

如何从Android程序将SQLite数据库文件上传到FTP服务器

来自分类Dev

将大型数据库文件上传到实时服务器

来自分类Dev

将不同的唯一文件上传到服务器,并将其名称保存到数据库

来自分类Dev

我如何使用react native expo image将图像上传到本地服务器PHP /数据库MySQL

来自分类Dev

DreamFactory:如何将图像上传到文件服务器并将图像的路径保存在数据库中?

来自分类Dev

将图像上传到服务器并将URL保存到服务器

来自分类Dev

如何将文件上传到数据库,而不仅仅是使用php的服务器

来自分类Dev

将图像上传到服务器并存储在MySQL数据库中

来自分类Dev

使用Android和PHP将图像上传到服务器(MySQL数据库)

来自分类Dev

将多个图像上传到Apache服务器上的mysql数据库

来自分类Dev

将图像上传到服务器并将图像路径存储在mysql数据库中

来自分类Dev

将文件上传到Web服务器Delphi + PHP

来自分类Dev

将文件上传到Web服务器Delphi + php

来自分类Dev

将 Excel 文件上传到 Web 服务器

来自分类Dev

将文件上传到服务器

来自分类Dev

将文件上传到服务器

来自分类Dev

将数据保存到数据库时 Laravel Ajax 500 内部服务器错误

来自分类Dev

发送上传的文件作为附件,但不保存到服务器

来自分类Dev

如何将base64保存到cordova / ionic上的图像文件或上传到服务器?

来自分类Dev

如何制作将文本保存在数据库中并在服务器上上传文件的表单

来自分类Dev

从POST请求将文件保存到Web服务器

Related 相关文章

  1. 1

    将文件上传到Web服务而不保存到服务器,数据库或本地

  2. 2

    将照片上传到数据库(到服务器而不是本地主机)

  3. 3

    将站点上传到Web服务器后无法将数据插入数据库

  4. 4

    如何将本地数据从服务器数据库保存到本地数据库?

  5. 5

    如何将sqlite3数据库上传到Web服务器?

  6. 6

    将图像上传到服务器的最佳方法是什么?保存在数据库还是服务器文件夹中?

  7. 7

    将多个文件上传到服务器并将路径复制到数据库

  8. 8

    将大型数据库文件上传到服务器

  9. 9

    如何从Android程序将SQLite数据库文件上传到FTP服务器

  10. 10

    将大型数据库文件上传到实时服务器

  11. 11

    将不同的唯一文件上传到服务器,并将其名称保存到数据库

  12. 12

    我如何使用react native expo image将图像上传到本地服务器PHP /数据库MySQL

  13. 13

    DreamFactory:如何将图像上传到文件服务器并将图像的路径保存在数据库中?

  14. 14

    将图像上传到服务器并将URL保存到服务器

  15. 15

    如何将文件上传到数据库,而不仅仅是使用php的服务器

  16. 16

    将图像上传到服务器并存储在MySQL数据库中

  17. 17

    使用Android和PHP将图像上传到服务器(MySQL数据库)

  18. 18

    将多个图像上传到Apache服务器上的mysql数据库

  19. 19

    将图像上传到服务器并将图像路径存储在mysql数据库中

  20. 20

    将文件上传到Web服务器Delphi + PHP

  21. 21

    将文件上传到Web服务器Delphi + php

  22. 22

    将 Excel 文件上传到 Web 服务器

  23. 23

    将文件上传到服务器

  24. 24

    将文件上传到服务器

  25. 25

    将数据保存到数据库时 Laravel Ajax 500 内部服务器错误

  26. 26

    发送上传的文件作为附件,但不保存到服务器

  27. 27

    如何将base64保存到cordova / ionic上的图像文件或上传到服务器?

  28. 28

    如何制作将文本保存在数据库中并在服务器上上传文件的表单

  29. 29

    从POST请求将文件保存到Web服务器

热门标签

归档