我有一个使用FtpWebRequest从 FTP 服务器下载图像的服务.NET 。我有一台将图像存储在同一 FTP 服务器上的相机。
如果我的服务在相机完成存储相同图像之前看到图像并尝试下载它,则图像的“尚未存储的部分”显示为灰色(损坏)。
问题:如何检测图像是否可以下载(完全存储)?
我有一个使用FtpWebRequest从 FTP 服务器下载图像的服务.NET 。我有一台将图像存储在同一 FTP 服务器上的相机。
如果我的服务在相机完成存储相同图像之前看到图像并尝试下载它,则图像的“尚未存储的部分”显示为灰色(损坏)。
问题:如何检测图像是否可以下载(完全存储)?
如果您可以控制发送服务,则可以使用标记文件来实现。如果发送服务在完成后会写入一个“.finished”文件,您可以等待该文件出现。
但是,我怀疑您无法控制相机中的软件。检测相机是否已完成上传存在一些问题,特别是在互联网连接速度较慢的情况下。
我认为最好的解决方案是检查文件大小的变化。监视文件夹并查看是否出现新文件。然后,如果文件大小在一分钟内没有改变,那么下载文件应该是相当安全的。
使相机软件将图像存储在不同的目录中(我们称之为 Dir1)。尝试将文件从这个目录移动到另一个目录(我们称之为 Dir2)。
如果相机软件仍然打开文件,则移动应该失败,因此只有完成的图像才会从 Dir1 移动到 Dir2。
从 Dir2 下载图像。
在大文件之后上传另一个小文件。使用小文件检查“完整性”(或者里面的 MD5 也可以)。