File io 如何将压缩文件夹保存到磁盘asp.net core 3.0
我想使用.net core 3.0将压缩文件夹上载并保存到磁盘驱动器上的路径中,但压缩文件夹保存为0字节File io 如何将压缩文件夹保存到磁盘asp.net core 3.0,file-io,asp.net-core-mvc,zip,File Io,Asp.net Core Mvc,Zip,我想使用.net core 3.0将压缩文件夹上载并保存到磁盘驱动器上的路径中,但压缩文件夹保存为0字节 [HttpPost] [ValidateAntiForgeryToken()] [RequestFormLimits(MultipartBodyLengthLimit = 20971520)]//max size should be 20MB public IActionResult AddFile(List<IFormFile> files) {
[HttpPost]
[ValidateAntiForgeryToken()]
[RequestFormLimits(MultipartBodyLengthLimit = 20971520)]//max size should be 20MB
public IActionResult AddFile(List<IFormFile> files)
{
IActionResult ar = null;
try
{
if (id != 0)
{
foreach(var singlefile in files)
{
var ext = Path.GetExtension(singlefile.FileName).ToLowerInvariant();
//begin saving procedure
if(singlefile.Length > 0 && singlefile.Length <= Convert.ToInt32(_config.Value.FileSizeLimit))
{
var filepath = Path.Combine(_config.Value.StoredFilesPath, Path.GetRandomFileName().Split('.')[0] + ext);
using(var stream = System.IO.File.Create(filepath))
{
singlefile.CopyToAsync(stream);
}
}
}
}
catch (Exception e)
{
_log.Error(e);
}
return ar;
}
[HttpPost]
[ValidateAntiForgeryToken()]
[RequestFormLimits(MultipartBodyLengthLimit=20971520)]//最大大小应为20MB
公共IActionResult AddFile(列出文件)
{
IActionResult ar=null;
尝试
{
如果(id!=0)
{
foreach(文件中的var singlefile)
{
var ext=Path.GetExtension(singlefile.FileName).ToLowerInvariant();
//开始保存过程
如果(singlefile.Length>0&&singlefile.Length您没有等待复制任务完成。请尝试将该方法更改为异步操作:
public async Task<IActionResult> AddFile(List<IFormFile> files)
{
...
using(var stream = System.IO.File.Create(filepath))
{
await singlefile.CopyToAsync(stream); // await here, otherwise the stream is disposed quickly
}
...
}
公共异步任务AddFile(列表文件)
{
...
使用(var stream=System.IO.File.Create(filepath))
{
wait singlefile.CopyToAsync(stream);//在此处等待,否则将快速释放流
}
...
}
“我可以使用相同的代码保存具有其他扩展名的文件”-但该代码仅显式保存具有.zip
扩展名的文件?是的,在我的原始代码中,我删除了if语句。twas在调试过程中,我将其放在了那里。我已编辑了问题