質問: javascript初心者です。 Unix系のファイルシステムではファイル・パス名の大文字・小文字は区別されますが、javascriptで以下のような関数はどのような方法で実現できるでしょうか? 引数:ファイル名を示す文字列 処理内容:サーバー上に引数で示した名前のファイルが存在するか判定する。ただし、大文字・小文字の違いがあっても同じファイルとみなして判定する。 返り値:指定したファイルが存在しない場合は空文字列を返す。ファイルが存在する場合はそのファイルの(大文字・小文字の区別が)正しいファイル名を返す。 以上、よろしくお願いします。 追記:コメントで確認いただいた項目について回答します。 >らっしー様 そのケースがありましたね。該当するファイルが複数存在する場合はそれら全てを配列で返すという方向で。(実際は大文字・小文字だけ異なるファイルが複数存在するケースは用途的に想定していません) >nekketsuuu様 Windows環境から画像ファイルおよび画像ファイルのファイル名を記述したテキストファイルがサーバーにアップロードされていて、テキストファイルに記述された画像をjavascriptのプログラムで読み込みたいが記述されているファイル名の大文字・小文字がいい加減である...といった状況を想定しています。 >supa様 Node.jsではなくクライアントのブラウザ上で処理が実行されることを想定しています。
回答: **サーバー側で**探すのなら、ファイル名のリストを取得し、各ファイル名の子文字を大文字に変換した上で、検索したいファイル名(を大文字にしたもの)を使って検索すると良いです。 ただ「クライアントのブラウザ上で処理が実行されることを想定しています」とのことなので、実際にこういうことができるかはサーバー側のファイル情報をどのような API で知れるのかに依りそうです。 また今回の話は case insensitive な環境から case sensitive な環境にアップロードされた場合を考えているので、きちんとファイル名を保存していれば情報は欠損せず、何も困らないはずです。そもそも「記述されているファイル名の大文字・小文字がいい加減である」という状況が何故生じているのかを考える方が後々困らないかもしれません。 ※ Windows の NTFS は厳密には case sensitive として扱うこともできますが、その話は置いておいて。