File io 如何将压缩文件夹保存到磁盘asp.net core 3.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) {

我想使用.net core 3.0将压缩文件夹上载并保存到磁盘驱动器上的路径中,但压缩文件夹保存为0字节

[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在调试过程中,我将其放在了那里。我已编辑了问题