ユーザーが写真を含む広告を投稿できるフォームを作成しています。ユーザーがこのフォームにアクセスする前にログイン/登録する必要はありません。ユーザーがフォームに入力している間、写真を非同期でアップロードする必要があります。(たとえば、gumtree.com.auを使用すると、新しい広告の作成中に写真をアップロードできます)
ユーザーがファイルを選択するとすぐにファイルのアップロードを開始できることを私は知っています。ただし、サーバー側では、後でユーザーがフォームを送信したときに、これらのファイルをどのように識別できますか?ユーザーが未記入のフォームを放棄した場合、アップロードされたファイルを処理するにはどうすればよいですか?
これを適切に実現するための典型的なデザインパターンは何ですか?
これは1つのアプローチです
パート1
ユーザーがサイトにアクセスすると、サーバーに接続し、ランダムに生成された10文字の英数字(Xf4ht5Y4u9など)を送信します。これはユーザーIDコードです
クライアント側で少しのjavascriptとajaxを使用して簡単に実現できます
サーバー側では、PHPを使用して、ユーザーIDコードで名前が付けられた一時ディレクトリを作成できます。
パート2
ユーザーがファイルをアップロードし、この一時フォルダーに非同期で送信します
パート3
ユーザーがフォームに入力= true ---フォームや画像を処理するなどのアクションを実行し、一時フォルダーからそれらを移動します。一時フォルダは空になりました。機能的に必要な場合は、アップロードの次のバッチに使用できます。ファイルがまだアップロードされている場合に備えて、アップロード成功のコールバックを待つことができます
ユーザーがフォームに入力= false ---アップロードされたファイルは、処理されていないため、一時フォルダーに残ります。
パート4
サーバーサイドハウスキーピング。現在の日付からx日以上経過している場合は、一時フォルダーを1日1回確認し、スペースを節約するために削除します。任意のプラットフォームでシェルスクリプトを使用して実行できます
未処理のファイルがサーバー上でどれだけ長くぶら下がっているのか心配な場合は、上記のロジックを変更してください。たとえば、1時間ごとにハウスキーピングを実行し、一時フォルダの経過時間が6時間以上かどうかを確認します。
万が一、ユーザーが今すぐファイルをアップロードし、6時間以内にフォームに入力してから、サーバー側でクライアントに報告して、ファイルが削除されたため、再度アップロードする必要があることを通知できます。しかし、これはすべて、スペースが問題であるかどうかによって異なります。
5時間後にポップアップウィンドウを自動的に開いて、アップロードされたファイルがまだフォームに入力されていないとすぐに削除されることを通知できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加