.NET Core上传Zip文件为空无法解压问题求助
问题根源与解决思路
- 核心问题:代码中调用异步方法
CopyToAsync时未使用await,导致文件流还未完成写入就继续执行后续逻辑,最终生成的Zip文件为空,无法解压。 - 解决步骤:
- 为异步方法
CopyToAsync添加await关键字,确保文件内容完全写入磁盘后再进行解压等后续操作 - 修改方法签名,添加
async关键字并返回Task<retOp>,符合异步方法规范 - 建议补充异步操作的异常捕获,避免未处理的异步异常引发问题
- 为异步方法
修改后的关键代码片段
public async Task<retOp> UploadFile(IFormFile file) { try { string PathFile = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", Configuration.GetTempDir()); if (!Directory.Exists(PathFile)) { Directory.CreateDirectory(PathFile); } var formFile = file; if (formFile.Length > 0) { string fullPath = Path.Combine(PathFile, file.FileName); using (var stream = new FileStream(fullPath, FileMode.Create)) { // 添加await等待文件写入完成 await formFile.CopyToAsync(stream); } // 此处可安全执行解压等后续操作 } // 其余逻辑... } catch (Exception ex) { // 异常处理逻辑 return new retOp { /* 错误状态设置 */ }; } }
内容的提问来源于stack exchange,提问作者maccarilab
相关产品推荐
相关产品推荐

