Web Api文件上传和检索

时间:2016-06-13 03:20:57

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

我对在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();
            }
        }

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

2 个答案:

答案 0 :(得分:0)

如果您使用的是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

答案 1 :(得分:-1)

  1. 将图像作为二进制类型存储在数据库中。根据您的数据库,您可能需要blob,varbinary等。您还可以将文件保存到标准的可访问位置,并只存储该文件路径的路径,但对于大多数情况,您只需要数据库中的文件本身。如果你使用二进制路由,你的C#模型将有import sys import os sys.path.append(os.path.abspath("../../bbb/ccc/")) import tasks 成员映射到该列。
  2. 您需要让您的网络客户端通过byte[]请求中的请求正文上传文件内容。二进制图像数据将以POST的形式提供。像任何其他二进制流一样处理它以将其保存到您的数据库。
  3. 如果不知道如何与数据库进行交互,则无法回答这个问题。如果您使用的是Entity Framework或Linq to SQL,则可以执行this
  4. 之类的操作