gpt4 book ai didi

c# - 尝试移动时上传文件仍在使用*有时*

转载 作者:行者123 更新时间:2023-11-30 22:18:09 25 4
gpt4 key购买 nike

图像上传到我的服务器后,我的代码将其移动到用户详细信息指定的特定文件夹中。有时我认为它试图移动文件的速度太快,或者上传文件仍在使用中,所以 9/10 该功能不会执行移动。

有没有办法添加“等待”或检查文件是否正在使用并可能执行 while 循环直到允许移动文件的方法?

我 Controller 中的当前移动函数:

while (!File.Exists(uploadedPath))
{
}
File.Move(uploadedPath, savePath);

附言。我打算添加一个计数器以确保 while 循环不会卡住并且有超时。

最佳答案

如果您可以控制接收文件的代码,我会更新它以在文件完全接收后通知移动代码。或者,我会从那里移动文件,甚至将文件保存在最终应该存在的位置。

否则就是hack了。你需要

  1. 尝试移动文件,
  2. 如果没有移动则捕获异常
  3. 使用 Thread.Sleep 几秒钟
  4. 转到 1

沿线的东西:

bool success = false;
for (var count = 0; !success && count < 10; ++count)
{
try
{
File.Move(uploadedPath, savePath);
success = true;
}
catch (IOException)
{
Thread.Wait(1000);
}
}

您还需要处理根本无法移动文件的情况。所以这是一个 hack,如果有其他方式通知移动代码,一般不应该这样做。

另请注意:

从 File.Move msdn:

If you try to move a file across disk volumes and that file is in use, the file is copied to the destination, but it is not deleted from the source.

这意味着您的文件在移动后将保留在接收到的文件目录中。

关于c# - 尝试移动时上传文件仍在使用*有时*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16312539/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com