如何确定“drop folder”中的文件是否已完全传输

时间:2011-04-13 18:25:09

标签: file-io file-upload filehandle

远程客户端会将图像(以及特殊格式文本中的某些教学文件)上传到“drop文件夹”。上传完成后,我们需要开始处理这些图像。这将是一个简单但有缺陷的解决方案,只需让脚本每隔几秒自动开始处理文件夹中的任何文件(文件可以在处理后移出文件夹);但是当试图处理仅部分转移的大图像时会出现问题。

在处理文件之前,我可以使用哪些技巧来确保文件完全上传?

我自己的一些想法: 该脚本可以检查文件的有效性;即,部分jpeg会导致错误,您可以在脚本中响应该错误,但这会相当CPU密集。有些文件最后有特殊的标记,但我不能指望这个,我不确定我将要处理的格式。

我听说过“文件句柄”,但还没有真正弄清楚它们是什么的基础知识以及如何判断特定文件中是否存在“文件句柄”。基本上FTP守护进程(实际上,我在Windows上,所以“服务”)将在文件上传时保留一个“句柄”,你知道不会处理该文件。这些只是我的一些想法,但我不确定它们是否会起作用,或者是否有更好或更多可接受的解决方法。

2 个答案:

答案 0 :(得分:1)

如果你有一个服务器端脚本上传系统(PHP,ASP,JSP等),你可以指示脚本调用另一个脚本来处理文件,或者创建一个指示上传完成的标志文件,像这样的东西。

如果您的服务器是基于Linux的,则可以使用 lsof 来检查文件是否已打开。由于您的ftp / script / cgi将在上传完成后关闭文件, lsof 将不会在列表中显示该文件。

如果您的服务器是基于Windows的,则可以使用Process Explorer列出打开的文件。

答案 1 :(得分:0)

您的用户以何种方式上传图片?