我遇到了一种罕见的情况,即文件在写入后无法立即从 UNC 路径中读取。这是工作流程:
- plupload 将大文件分块发送到 WebAPI 方法
- 方法将块写入 UNC 路径(存储服务器)。这会循环直到文件完全上传。
- 经过几次其他操作后,相同的方法尝试再次读取文件,有时找不到文件
它似乎只在我们的服务器空闲一段时间后才会发生。如果我重复上传几次,它就会开始工作。
我认为这可能是网络配置问题,或者与文件在再次读取之前未完全关闭有关。
这是写入文件的部分代码(在这种情况下文件流可以吗?)
SaveStream(stream, new FileStream(fileName, FileMode.Append, FileAccess.Write));
这是 SaveStream 定义:
private static void SaveStream(Stream stream, FileStream fileStream)
{
using (var fs = fileStream)
{
var buffer = new byte[1024];
var l = stream.Read(buffer, 0, 1024);
while (l > 0)
{
fs.Write(buffer, 0, l);
l = stream.Read(buffer, 0, 1024);
}
fs.Flush();
fs.Close();
}
}
这是读取文件的代码:
var fileInfo = new FileInfo(fileName);
var exists = fileInfo.Exists;
这fileInfo.Exists
是返回错误的那个。
谢谢