2017-06-13 6 views
0

タイトルはかなりそれをすべて言っています。このシナリオはユーザーがファイルをアップロードしたものですが、その時点での負荷に応じて1台のサーバーのうちの1台を突く可能性があります。ユーザーが名前に特殊文字を含むファイルをアップロードしようとしている状況が発生しました。ファイル名をサニタイズする関数を書くことができますが、新しいサニタイズファイル名が存在しないことを確認する必要があります。私の考えは、createuuid()を使ってファイルの名前を変更することだけでした。私は、もし私が正しく覚えていれば、createuuid()関数はアルゴリズムの一部としてservernameを使うと信じています。もし6サーバのために一意性が6倍になるはずです。私はこの考え方で正しいですか?クラスター環境でのcreateuuidの安全性はどれくらいですか?

+0

あなたは正しいですか?私は少し違った状況にあり、cftoken、cfid、gettickcountの組み合わせが自分の目的に十分適していることがわかります。 –

答えて

1

私が正しく覚えていれば、CFはtimestamp + clock + servernameを使用します。

あなたはアップロードされたファイル名を消毒し、UUIDを追加するだけでよいと考えましたか?これは私にとって失敗しているようです。

+0

はい、DBに格納されているファイル名の長さが問題になります。 DBはクライアントによって複製されるので、DBスキーマの変更を可能な限り最小限に抑えようとしています。 – HPWD

+0

フィールドにはどのくらいの長さがありますか?ダッシュのないUUIDは32文字ですので、簡単に 'left(sanitizedFileName、(MAX_LENGTH - 32))'に行くことができます。 – Alex

+0

私たちはそれを変更できないわけではなく、単にクライアントに何か悲しみを起こさせないようにするために、少し複雑にするだけです。 :)しかし、あなたはダッシュを取り除くことについて良い点を作っています。 – HPWD

関連する問題