将filupload添加到asp-webapi中的方法中



我的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 });
}

将这两种方法结合起来的最好方法是什么,这样我就可以在数据库中存储的poster中上传文件?

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

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

最新更新