我的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(就像目前在第二种方法中所做的那样(,而是想将文件直接保存到数据库表中。
如果我正确理解了你的问题,你需要一个带有可以存储二进制数据的列的表。有不同的二进制数据类型,您应该选择一种适合您需要的类型(主要是文件大小(。之后,您可以将二进制文件插入到表中,就像处理文件名等一样。