繁体   English   中英

Asp.Core API 尝试上传文件并存储在数据库中:错误:415:不支持的媒体类型

[英]Asp.Core API trying to upload file and store in database: ERROR: 415: Unsupported Media Type

在尝试创建可以将文件(和其他数据)上传到数据库的 API 时,我总是被卡住。 API 具有原始 JSON 响应,其中数据填充数据库的不同表。 但是,对于邮递员,我必须将文件作为表单数据或二进制文件上传(与我想发送原始 JSON 数据的同时),但是无论我尝试什么,这似乎都不起作用。 所以这里是在 asp.core 中上传文件的方法(我的方法使用了一个视图模型类):

 if (item.fileuploadresults != null) {

   try {

     foreach(FileUploadResult f in item.fileuploadresults) {
       var parameters = new DynamicParameters();
       parameters.Add("file", f.files);
       parameters.Add("@filename", f.filename);
       parameters.Add("@blob", f.FileBlob);

       var filemessage = await _sqlconnection.QueryAsync < int > ($ @ "INSERT INTO 
       [dbo].[OptionalFile] (file, [FileName], [FileBloB])
         VALUES({
           f.files
         }, @filename, @blob); SELECT SCOPE_IDENTITY();
         ", parameters);

         int FileMessageID = filemessage.First();

         //update cross table
         await _sqlconnection.QueryAsync < int > ($ @ "INSERT INTO
        [dbo].[ClaimCrossOptionalFile]
           (ClaimID, FileID) VALUES({
             claimID
           }, {
             FileMessageID
           });
           ");

         }

       }

       catch (Exception ex) {
         int k = 0;
       }

     }

模型如下所示:

public class Service
{    
    public IList<FileUploadResult> fileuploadresults { get; set; }
        
}

public class FileUploadResult
{
    public IFormFile files { get; set; } 

    [MaxLength]
    public byte[] FileBlob { get; set; }

    public long Length { get; set; }

    public string filename { get; set; }
}

原始 JSON:

{
   "service":"Scheduled service",
   "RequestTypeId":"2",
   "CurrentKilometerreading":"10043",
   "OptionalMessage":"Message3",
   "fileuploadresults":[
      {
         "files":""
      }
   ],
   "works":[
      {
         "title":"Service1",
         "price":"200",
         "id":"1998"
      },
      {
         "title":"Service2",
         "price":"300",
         "id":"1999"
      },
      {
         "title":"labour 1",
         "chargePerHour":"10",
         "hours":"2",
         "price":"20.00",
         "id":"2000"
      },
      {
         "title":"labour2",
         "chargePerHour":"20",
         "hours":"2",
         "price":"40.00",
         "id":"2001"
      },
      {
         "title":"Part 1",
         "pricePerUnit":"10",
         "quantity":"11",
         "price":"110.00",
         "id":"2002"
      },
      {
         "title":"Part 1",
         "pricePerUnit":"10",
         "quantity":"11",
         "price":"110.00",
         "id":"2003"
      }
   ]
}

是否不可能在同一个请求中同时发送原始 json 数据和表单数据? 我也尝试过在邮递员中更改内容类型,但没有成功。

感谢任何对如何进行有任何想法的人。

尝试使用jsonConvert并在方法中使用[FromForm] string jsonData

如果有人也遇到这个问题,我找到了一个解决方案,你可以看看这篇文章: using jsonData as a key value to send mixed data in asp: does not update the database with the values

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM