【问题标题】:add filupload to method in asp web api将 filupload 添加到 asp web api 中的方法
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 你有这方面的例子吗?
猜你喜欢
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
相关资源
最近更新 更多