1

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

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

私自身の考えのいくつか:スクリプトはファイルの有効性をチェックできます。つまり、部分的なjpegはエラーになり、スクリプトでそのエラーに応答できますが、これはかなりCPUに負担がかかります。一部のファイルの最後に特別なマーカーがありますが、これを当てにすることはできません。どの形式を処理するかわかりません。

「ファイルハンドル」について聞いたことがありますが、それらが何であるか、および特定のファイルに「ファイルハンドル」があるかどうかをどのように判断できるかについての基本を実際には理解していません。基本的に、FTPデーモン(実際には、私はWindowsを使用しているので、「サービス」)は、ファイルがアップロードされている間、ファイルの「ハンドル」を保持し、そのファイルを処理しないことを知っています。これらは私の考えのほんの一部ですが、それらが機能するかどうか、またはこの問題を解決するためのより良いまたはより受け入れられた方法があるかどうかは本当にわかりません。

4

2 に答える 2

1

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

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

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

于 2011-04-13T18:54:23.230 に答える
0

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

于 2011-04-13T19:27:41.013 に答える