首页 > 解决方案 > 将 filupload 添加到 asp web api 中的方法

问题描述

我的 API 有这个方法:

if (item.fileuploadresults != null)
   {
     foreach (FileUploadResult f in item.fileuploadresults)
     {
      var parameters = new DynamicParameters();
      parameters.Add("filename", f.filename); 
        
      var filemessage = await _sqlconnection.QueryAsync<int>($@"INSERT INTO [dbo].[OptionalFile] 
      ([FileName]) VALUES (@filename); SELECT SCOPE_IDENTITY();", parameters);
        
       int FileMessageID = filemessage.First(); 
        
       //update crosstable
       await _sqlconnection.QueryAsync<int>($@"INSERT INTO[dbo].[ClaimCrossOptionalFile]
                                                         (ClaimID,FileID)
                                                          VALUES
                                                         ({claimID},{FileMessageID});");
}

使用基于此 JSON 的值更新数据库的位置:

"fileuploadresults" : [
    {"filename" : "a"},
    {"filename" : "b"},
    {"filename" : "c"},
    {"filename" : "d"}]},

现在,我希望能够将文件上传到数据库中。我有这种方法我测试过在邮递员中上传文件:

var files = new List<IFormFile>();
                    var result = new List<FileUploadResult>();

                    foreach (var file in files)
                    {
                        var path = Path.Combine(this.iwebHostEnvironment.WebRootPath, "images", file.FileName); 
                        var stream = new FileStream(path, FileMode.Create);
                        await file.CopyToAsync(stream);
                        result.Add(new FileUploadResult() { Name = file.FileName, Length = file.Length });
                    }

将这两种方法结合起来的最佳方法是什么,以便我可以在邮递员中上传文件,并将其存储在数据库中?

例如,我不想将文件保存到 webrootpath(就像目前在第二种方法中所做的那样),我想将文件直接保存到数据库表中。

标签: c#jsonapiasp.net-corepostman

解决方案


如果我正确理解了您的问题,您需要有一个包含可以存储二进制数据的列的表。有不同的二进制数据类型,您应该选择适合您需要的一种(主要是文件大小)。之后,您可以将二进制文件插入表中,就像您使用文件名等一样。


推荐阅读