ASP.NET Core Web API上传多个文件和JSON数据的方法及代码

ASP.NET Core Web API中,上传多个文件和JSON数据的实现涉及配置文件上传功能和处理JSON数据。下面是一个完整的示例,展示如何在ASP.NET Core Web API中处理这种请求。

1. 配置项目
首先,确保你的ASP.NET Core项目包含必要的包:

Microsoft.AspNetCore.Http
Microsoft.AspNetCore.Mvc
这些包通常在创建ASP.NET Core Web API项目时会自动包含。

2. 创建模型类
定义一个模型类来表示JSON数据。例如,假设我们有一个简单的Product模型:


public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
3. 创建控制器
在控制器中,创建一个用于处理上传请求的动作方法。这个方法将接受文件和JSON数据。使用[FromForm]属性来处理文件和JSON数据。


using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace YourNamespace.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class UploadController : ControllerBase
    {
        [HttpPost("upload")]
        public async Task<IActionResult> UploadFilesAndData([FromForm] Product product, [FromForm] List<IFormFile> files)
        {
            if (product == null || files == null || files.Count == 0)
            {
                return BadRequest("Invalid input.");
            }

            // Process JSON data (product)
            // e.g., save product details to the database

            // Process files
            foreach (var file in files)
            {
                if (file.Length > 0)
                {
                    var filePath = Path.Combine("YourFileSavePath", file.FileName);

                    using (var stream = new FileStream(filePath, FileMode.Create))
                    {
                        await file.CopyToAsync(stream);
                    }
                }
            }

            return Ok(new { message = "Files and data uploaded successfully." });
        }
    }
}
4. 配置Startup.cs
确保在Startup.cs中配置了文件上传的相关设置。你可能需要增加对静态文件和其他配置的支持:


public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    // Add any other services you need
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}
5. 测试API
使用Postman或其他HTTP客户端来测试上传功能。确保请求类型为POST,并将请求的Content-Type设置为multipart/form-data。发送JSON数据和文件,如下图所示:

在Body选项卡中选择form-data。
添加字段product,并将其值设置为一个JSON字符串(例如:{"id": 1, "name": "Sample Product", "price": 99.99})。
添加多个文件字段,选择要上传的文件。

POST /api/upload/upload HTTP/1.1
Host: localhost:5001
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="product"

{"id": 1, "name": "Sample Product", "price": 99.99}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="file1.txt"
Content-Type: text/plain

(file content here)
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="files"; filename="file2.jpg"
Content-Type: image/jpeg

(file content here)
------WebKitFormBoundary7MA4YWxkTrZu0gW--

参考文档:ASP.NET Core Web API上传多个文件和JSON数据的方法及代码 -CJavaPy

  • 14
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值