【发布时间】:2021-09-06 02:13:19
【问题描述】:
我的 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(就像目前在第二种方法中所做的那样),而是将文件直接保存到数据库表中。
【问题讨论】:
-
你的意思是你想上传一个文件和一些参数到asp.net核心后端,然后将这些数据存储到数据库中?
-
是这样的
-
一般情况下,文件上传应该是formdata,我们不能直接通过json格式体发送文件。你能发送文件上传结果吗?虽然表单数据不是 json 格式。
-
问题是同时发送json和form数据好像不行
-
是的,我们做不到。如果你想结合这两个请求,你应该使用formdata发送文件上传结果和请求正文中的文件。
标签: c# json api asp.net-core postman