如何处理api中的文件流

本文关键字:文件 api 何处理 处理 | 更新日期: 2023-09-27 18:06:16

如何处理api中的文件流?

假设我需要调用这个api 10次。

[HttpGet("{fileName}")]
public async Task<IActionResult> Get(string fileName)
{
   var res = File.Open(path, FileMode.Open);
   var file = File(res, "application/zip", fileName);
   return file;
}

在api方法返回流之前我不能处理流。

当我第二次调用它时,我将得到异常:

进程无法访问文件"C:'test'example.zip",因为它是正在被另一个进程使用

如何处理api中的文件流

首先,记住并发性和线程安全。(许多请求可以同时传递给你的控制器。在这种情况下,如果你正在写一些东西到文件-应用程序的行为可能是错误的)。如果您不写入文件(只读取),那么您可以为其他线程指定共享模式,如下所示:

using(var file = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)){
   //your code goes here
}