我想在继续之前等待SaveAs完成,我已经尝试了一些不同的解决方案,但它仍然只是立即继续,而不是等待上传完成。我尝试了什么:
创建一个包装函数来返回一个int(这是我在Stack Overflow上找到的):
public int SaveFile(HttpPostedFileBase file, string filePath)
{
if (!System.IO.File.Exists(filePath))
{
try
{
file.SaveAs(filePath);
return 1;
}
catch
{
}
}
return 0;
}
在我的主要方法中运行:
var success = SaveFile(hpf, savedFileName);
我还尝试检查文件是否准备就绪:
while (!IsFileReady(filePath))
{
System.Threading.Thread.Sleep(500);
}
致电:
[Authorize(Roles = "L,I")]
public static bool IsFileReady(String sFilename)
{
// If the file can be opened for exclusive access it means that the file
// is no longer locked by another process.
try
{
using (FileStream inputStream = System.IO.File.Open(sFilename, FileMode.Open, FileAccess.Read, FileShare.None))
{
if (inputStream.Length > 0)
{
return true;
}
else
{
return false;
}
}
}
catch (Exception)
{
return false;
}
}
再次,没有运气。我只需要确保file.SaveAs(...)等待文件完成上传以继续。