当 Excel 文件通过 OneDrive 同步并在 Excel 应用程序中打开时,当您尝试选择该文件时,会出现消息“文件正在使用”,这是正确的。但是,当我拖放文件时,没有任何消息出现,但是当将文件发送到服务器时,文件没有发送。
有什么方法可以检查文件是否正在被另一个进程使用?能够自己显示消息。
如果您在 Web 环境中工作,您将需要使用服务器端验证,因为由于安全措施,JS 无法访问文件... 这就是我在 asp.net 中执行此操作的方式:
public JsonResult CheckFileStatus(string filePath)
{
try
{
if (IsFileInUse(filePath))
{
return new JsonResult(new { success = false, message = "file is in use" });
}
else
{
return new JsonResult(new { success = true, message = "File is not in use and can be accessed." });
}
}
catch (Exception ex)
{
// Handle any unexpected errors
return new JsonResult(new { success = false, message = ex.Message });
}
}
private bool IsFileInUse(string filePath)
{
try
{
using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
// File is not in use
}
return false;
}
catch (IOException)
{
// File is in use
return true;
}
}