【问题标题】:Web Api Files Uploads and RetrievingWeb Api 文件上传和检索
【发布时间】:2016-06-14 03:08:49
【问题描述】:

我有一个关于在 sql 中存储图像的标准过程和这个过程的过程的问题。 退出对此的看法:用户从应用程序上传图像,我需要保存它们。

我的问题是: 1. 我如何储存它们?我能够找到一些人们建议使用二进制和一些建议图像的帖子。我相信图像在以后的 sql 中将不再可用。 2.我如何从api调用中获取物理文件。我目前可以看到我的文件名和所有详细信息。我的问题是我如何实际抓取物理文件并放入二进制数组。我只能找到人们使用物理路径访问他们的文件的解决方案。 3.我如何从sql中检索文件。我想这将取决于我将如何存储它。

public IHttpActionResult UploadBridgeImage()
        {
            var httpRequest = HttpContext.Current.Request;
            if (httpRequest.Files.Count > 1)
            {

            }

            try
            {
                return Ok();
            }
            catch (Exception)
            {
                return InternalServerError();
            }
        }

感谢您的帮助。任何指导都表示赞赏,甚至是我可以从中学习的有用链接。

【问题讨论】:

  • 感谢您在没有任何解释的情况下投反对票。
  • 感谢您在没有先阅读和理解规则的情况下提出问题。

标签: c# sql asp.net-web-api


【解决方案1】:

如果您使用的是 SQL Server - 那么建议使用 FileStream 存储。

这样做的好处是您仍然可以获得 SQL Server 附带的所有事务支持。它还备份数据以及其他所有内容。

https://msdn.microsoft.com/en-us/library/gg471497.aspx

这里的例子:

https://msdn.microsoft.com/en-us/library/cc716724(v=vs.110).aspx

【讨论】:

    【解决方案2】:
    1. 将图像作为二进制类型存储在数据库中。根据您的数据库,您可能需要 blob、varbinary 等。您也可以将文件保存到标准的、可访问的位置,然后只存储该文件路径的路径,但在大多数情况下,您只需要数据库中的文件本身。如果您采用二进制路由,您的 C# 模型将有一个 byte[] 成员映射到该列。
    2. 您需要让您的 Web 客户端通过 POST 请求中的请求正文上传文件内容。二进制图像数据将以HttpContext.Request.Current.InputStream 的形式提供。像处理任何其他二进制流一样处理它以将其保存到您的数据库中。
    3. 在不知道您如何与数据库交互的情况下无法回答这个问题。如果您使用的是 Entity Framework 或 Linq to SQL,则可以执行 this 之类的操作。

    【讨论】:

    • 另一种选择是使用 Base64 字符串...请解释用户如何提交文件以便我可以帮助您获取文件?您有一个进行 API 调用的应用程序?
    猜你喜欢
    • 1970-01-01
    • 2020-07-10
    • 2020-08-25
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-13
    相关资源
    最近更新 更多