.NET MVC Web API 将文件上传到本地存储,将数据模型上传到数据库



我想上传一个文件并用它传递模型。但是当我从邮递员那里尝试时,它总是带来错误。

这是我的代码

public async Task<IHttpActionResult> PostArPumPd([FromBody] tx_arPumPd pum)
{          
try
{
if (pum == null)
{
return Content(HttpStatusCode.BadRequest, "Enter the data correctly");
}
else
{
tx_arPumPd arpumpds = new tx_arPumPd()
{
doc_no = doc,
doc_date = DateTime.Now,
descs = pum.descs,
currency_code = pum.currency_code,
amount = pum.amount,
employee_code = pum.employee_code,
head_code = pum.head_code,
company_code = pum.company_code,
created_by = pum.emp_code,
created_date = DateTime.Now
};
db.tx_arPumPd.Add(arpumpds);
var multiFormDataStreamProvider = new MultiFileUploadProvider(Constants.MEDIA_PATH);                   
var mod = "PP";
var newFileName = mod + "_" + doc;
await Request.Content.ReadAsMultipartAsync(multiFormDataStreamProvider);
try
{
await FileHelper.Upload(multiFormDataStreamProvider, mod, newFileName);
db.SaveChanges();
return Content(HttpStatusCode.Created, "Data was save");
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}                    
}
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}
}

当我到达此部分时遇到错误 await Request.Content.ReadAsMultipartAsync(multiFormDataStreamProvider(;

这是错误

IO异常:MIME 多部分流的意外结束。 哑剧多部分 邮件未完成与邮递员的测试

有谁知道为什么?并帮助我上传文件和数据模型? 非常感谢您的帮助

好的,我找到了答案。为了保存文件和表单数据,我不解析模型。我只是使用表单数据从邮局发送数据,值是 Json 数据。因此,我从 ReadAsMultipartAsync 读取请求并获取 Json 数据,然后对 json 进行解压缩。之后,我们可以保存数据。

这就是我从邮局发送数据的方式 波斯特曼特

这是代码

public async Task<IHttpActionResult> PostArPumPd()
{          
try
{
var multiFormDataStreamProvider = new MultiFileUploadProvider(Constants.MEDIA_PATH);
var readToProvider = await Request.Content.ReadAsMultipartAsync(multiFormDataStreamProvider);
// Get Json Data and Deserialize it
var json = await readToProvider.Contents[0].ReadAsStringAsync();
tx_arPumPd a = JsonConvert.DeserializeObject<tx_arPumPd>(json);
// Set mod and file name for FileHelper classl
var mod = "PP";
var newFileName = mod + "_" + doc ;
tx_arPumPd arpumpds = new tx_arPumPd()
{
doc_no = doc,
doc_date = DateTime.Now,
descs = a.descs,
currency_code = a.currency_code,
amount = a.amount,
employee_code = a.employee_code,
head_code = a.head_code,
company_code = a.company_code,
created_by = a.emp_code,
created_date = DateTime.Now
};
db.tx_arPumPd.Add(arpumpds);
var dtl = a.tx_arPumPdDtl;
foreach (var item in dtl)
{
item.doc_no         = doc;
item.bg_is_ok       = true;
item.bg_approved    = true;
item.bg_app_date    = DateTime.Now;
item.created_by     = a.emp_Code;
item.created_date   = DateTime.Now;
db.tx_arPumPdDtl.Add(item);
}
try
{
await FileHelper.Upload(multiFormDataStreamProvider, mod, newFileName);
db.SaveChanges();
return Content(HttpStatusCode.Created, "Data was save");
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}                    
}
catch (Exception ex)
{
return Content(HttpStatusCode.BadRequest, ex);
}
}

如果有人有更好的方法来做到这一点,我仍然很高兴了解它。 谢谢。

最新更新