Javascript には、サーバーにファイルをアップロードして出力を取得できるスクリプトがあります。出力の 1 つのコンポーネントは、アップロードされたファイルの名前です。たとえば、出力名は次のようになります。
test.pdf
次に、 の内容がキーにtest.pdf
保存されます。localStorage
項目名はファイルの名前です: localStorage.setItem(name, data)
.
これは正常に機能しますが、ファイルの名前がアップロードおよび取得されるファイルの名前と同じ場合は機能しません。
つまり、ユーザーが という名前のファイルをアップロードすると、Hello 34.pdf
そのファイルの名前と内容が LS キーに保存されます。ただし、同じファイルを再度アップロードするか、同じ名前の別のファイルをアップロードすると、現在のファイルが同じ名前に置き換えられます。
これを解決するには、ドキュメント タイトルの末尾に番号を追加できるようにする必要があります。これにより、LS で同じ名前のファイルのバージョンをできるだけ多く持つことができます。
次のように、ファイルが既にアップロードされているファイルと同じ名前であるかどうかを確認できることはわかっています。
var title = $('#file')[0].files[0]["name"];
if (localStorage.getItem(title)) {
alert("same name");
}
localStorage.setItem(title, data);
しかし、そこから最後に数字を追加する方法がわかりません。次のように、正規表現はこれを行うための適切な方法ではないと思います。
if (title.match(/[\.pdf ]\d/g) != null) {
var number = title.match(/[\.pdf ]\d/g) + 1;
} else {
var number = "1";
}
最後にある拡張子に依存しており.pdf
、JS 正規表現は一般的に悪いです。
これを行うためのより良い方法はありますか? ファイル名を別の方法でインデックス化する必要がありますか?