2011-04-13 11 views
1

リモートクライアントは、画像(および特別なフォーマットのテキストの指示ファイル)を「ドロップフォルダ」にアップロードします。アップロードが完了したら、これらの画像の処理を開始する必要があります。スクリプトが自動的に数秒ごとにフォルダ内のファイルの処理を開始するようにするのは簡単ですが、欠陥のある解決策です(ファイルは一度処理されたフォルダから移動できます)。部分的にしか転送されない大きな画像を処理しようとすると問題が発生します。"ドロップフォルダ"内のファイルが完全に転送されているかどうかを確認するには

ファイルを処理する前に完全にアップロードされていることを確認するために使用できるトリックは何ですか?

私自身の考えのいくつか: スクリプトはファイルの正当性をチェックできます。つまり、部分的なjpegがエラーになり、スクリプト内のそのエラーに応答することができますが、かなりCPUを消費します。一部のファイルには最後に特殊なマーカーが付いていますが、私はこれを信じることができません。どのフォーマットを扱うのかよく分かりません。

私は "ファイルハンドル"について聞いたことがありますが、実際には何かの基礎や特定のファイルに "ファイルハンドル"があるかどうかわかります。基本的にFTPデーモン(実際には私はWindows上にあるので、 "サービス")はアップロード中にファイルに "ハンドル"を保持し、そのファイルを処理しないことを知っているでしょう。これらは私の思考のほんの一部ですが、もし彼らがうまくいくかどうか、あるいはこの問題を解決するより良い、あるいはより受け入れられた方法があるかどうかはわかりません。

答えて

1

サーバー側のスクリプトアップロードシステム(PHP、ASP、JSPなど)を使用している場合、スクリプトに別のスクリプトを呼び出してファイルを処理したり、アップロードが完了したことを示すフラグファイルを作成したりすることができます、 このようなもの。

サーバーがLinuxベースの場合は、lsofを使用して、ファイルが開いているかどうかを確認できます。アップロード完了後にftp/script/cgiがファイルを閉じるので、lsofはリストにファイルを表示しません。

サーバーがWindowsベースの場合は、プロセスエクスプローラを使用して開いているファイルを一覧表示できます。

0

ユーザーはどのような方法で画像をアップロードしていますか?

関連する問題