axios请求配置
let formData = new FormData();
formData.append("files", this.file); //files需与方法里的参数files名称一样
let config = {
headers: {
"Content-Type": "multipart/form-data",
},
};
axios.post(this.uploadURL, formData, config).then((res) => {//需引入axios
console.log(res);
});
controller
[HttpPost]
public async Task<IActionResult> UploadGlbFile([FromForm] List<IFormFile> files, [FromServices] IConfiguration configuration)
{
var directoryPath = configuration["App:GlbDirectory"];
Logger.LogInformation($"本次上传{files.Count}个文件");
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
var mbSize = formFile.Length / 1024.0 / 1024.0;
Logger.LogInformation($"上传文件{formFile.FileName},大小{mbSize:f2}MB");
var filePath = Path.Combine(directoryPath, formFile.FileName);
Logger.LogInformation($"完整路径{filePath}");
using var stream = File.Open(filePath, FileMode.OpenOrCreate);//没有就新建,有就覆盖
await formFile.CopyToAsync(stream);
}
}
return new OkObjectResult("上传成功");
}
Startup
封装了一把
private void ConfigureLargeFileUpload(ServiceConfigurationContext context)
{
context.Services.Configure<FormOptions>(x =>
{
x.ValueLengthLimit = 5000; // Limit on individual form values
x.MultipartBodyLengthLimit = 1 * 1024 * 1024 * 1024; // Limit on form body size
x.MultipartHeadersLengthLimit = 1 * 1024 * 1024 * 1024; // Limit on form header size
});
context.Services.Configure<IISServerOptions>(options =>
{
options.MaxRequestBodySize = 1 * 1024 * 1024 * 1024;// Limit on request body size
});
}
web.config
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- This will handle requests up to 700MB -->
<requestLimits maxAllowedContentLength="737280000" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
发布的时候可能被覆盖,要检查web.config文件