c# - 将 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(就像目前在第二种方法中所做的那样),我想将文件直接保存到数据库表中。
解决方案
如果我正确理解了您的问题,您需要有一个包含可以存储二进制数据的列的表。有不同的二进制数据类型,您应该选择适合您需要的一种(主要是文件大小)。之后,您可以将二进制文件插入表中,就像您使用文件名等一样。
推荐阅读
- javascript - 如何根据键过滤 JSON,所以我只有所有对象的一种键的列表
- objective-c - Objective-C,无符号长 _Nullable
- python - 重采样具有重复值的时间序列
- angular - 在 vue.js 应用程序中更新状态时使用什么(rxJs vs Vuex)
- javascript - 即使使用公共数据库,也缺少权限或权限不足
- spring-boot - 如何使用 Neo4j 在 Spring-boot 项目中设置实体?
- amazon-web-services - 使用 boto3 或 es 库将数据输入到 aws elasticsearch
- mysql - SQL:根据计划重新分配 id
- c++ - Getting constexpr to work with pow in C++17 on OSX
- python - 如何精确合并两个不同的DataFrame,它们之间有完全不同的列