javascript - 如何使用WEB API Dot net core实现文件上传?
问题描述
我正在开发 ASP DOT NET 核心 web api,我需要在其中发送多个附件。我试过如下
<input type="text" id="txt_firstName" />
<input type="text" id="txt_lastName" />
<input type="file" id="file_TicketManageMent_AttachFile" multiple />
<input type="button" onclick="fnADD()" />
<script>
function fnADD(){
var input = document.getElementById('file_TicketManageMent_AttachFile');
var files = fileList;
var formData = new FormData();
for (var i = 0; i != files.length; i++) {
formData.append("files", files[i]);
}
var mdl = {};
mdl.FirstName = 'Title';
mdl.LastName = 'Short Description';
mdl.Attachments = formData;
$.ajax({
cache: false,
type: 'Post',
contentType: 'application/json',
data: JSON.stringify(mdl),
url: fnApiRequestUri('api/Customer/AddTicket'),
success: function (xhr, ajaxOptions, thrownError) {
}
});
}
</script>
//C# code
[Route("AddTicket")]
[HttpPost]
[Authorize(Roles = MethodsAuthorization.AllRoles)]
public async Task<IActionResult> AddTicket(Model _model)
{
}
public class Model
{
public string FirstName {get;set;}
public string LastName {get;set;}
public List<IFormFile> Attachments { get; set; }
}
我收到以下错误 ,服务器响应状态为 400 ()
解决方案
在我需要发送多个附件的 ASP DOT NET 核心 web api 上工作
要实现它,您可以尝试修改如下代码。
js客户端
function fnADD() {
var input = document.getElementById('file_TicketManageMent_AttachFile');
var files = input.files;
var formData = new FormData();
for (var i = 0; i != files.length; i++) {
formData.append("Attachments", files[i]);
}
formData.append("FirstName", 'Title');
formData.append("LastName", 'Short Description');
$.ajax({
cache: false,
type: 'Post',
data: formData,
url: '{your_url_here}',
processData: false,
contentType: false,
success: function (xhr, ajaxOptions, thrownError) {
}
});
}
控制器动作
[Route("AddTicket")]
[HttpPost]
[Authorize(Roles = MethodsAuthorization.AllRoles)]
public async Task<IActionResult> AddTicket([FromForm]Model _model)
{
//code logic here
}
测试结果
推荐阅读
- r - R用ifelse遍历向量
- html - 引用外部 svg 文件
- ambari - ambari 集群 + ambari-agent 与 ambari 服务器之间的连接不良
- c# - 在 ASP.NET Core 3 中添加 Mime 类型
- python - Python geopandas - 编辑地理数据
- python - 我哪里错了
- cytoscape - 删除了冗余边,但未创建边表列
- amazon-web-services - AWS InvalidSignatureException,从 docker 容器运行时签名已过期
- reactjs - 重构一些代码我发现了这个。我认为它应该在构造函数中。关于这在课堂之外有什么想法吗?
- php - PHP MySQL 选择特定/非特定模式