
ryouchiです。
現在下記環境でWebブラウザよりファイルのアップロードを行うサーバアプリケーションを作成しています。
---
Webサーバ:WindowsNT4.0 SP4+IIS4.0+ColdFusion4.5
クライアント:
Windows 95/98/ME/NT WorkStation
InternetExplorer(4.0/4.5/5.0/5.5)
Netscape Communicator 4.7
MacOS 8.1/8.6/9.04
Netscape Communicator 4.7
---
Macでは「:」はディレクトリセパレータとしてシステムが利用しているので「:」を含むファイル名は使えません。
Windowsでは「/」「\」・・・などは使えません。
NTサーバが認識不可能なファイル名のついたMacのファイルをアップロードする際に、<input type="FILE">で選ばれたファイルがWindowsまたは、Macで使えないファイル名ならばJavaScriptでチェックしアラートを表示するようなことは可能でしょうか?
また、<input type="FILE" name="fname">でファイルを選択したとき、このfnameのvalueには絶対パスが入ると思うので単純にvalueの値に未使用の文字が使われているという判断では不十分です。
Macから「Macintosh HD:12/1データ_1.doc」というフォルダ下にあるファイルは「/」が含まれているため送信できないようにしたいのですが、上記のvalueの判断のみでは、「Macintosh HD:12/1フォルダ:データ_1.doc」というデータも絶対パス内に/が入っているため送付できません。
またサーバ内では送信したファイル名はクライアントのマシンで付いていた名前を利用したいので、サーバ側で適当な名前をつけることは考慮しません。
要するに<input type="FILE">を用いたファイルアップロードの際、Mac・Winのどのブラウザからでも送られるファイル名をチェックし、問題のあるファイル名ならば送信できない(アラートを表示)したいのです。
有識者のかた、よろしく御教授ください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
>(JavaScriptで絶対パスをGetした場合)では「/」がセパレータとなっているようです。
質問の趣旨を勘違いしていたようです。ごめんなさい。m(_ _)m
Javascriptで絶対パスをGetするのではなく、INPUTタグのValueを引いてもダメなんですか?
とするとJavascriptではなくCGI側で判断してするしかないのではないでしょうか?
とりあえず、Web検索で見つけたCGIのURLをつけます。
参考にもならなくなってしまってすみませんxxx
参考URL:http://obata.sinnet.ne.jp/cgi/imgboard.5cgi
No.1
- 回答日時:
ソースで提案できなくて申し訳ありませんが、下記のような方法では取れないでしょうか?
(イベントはONCLICKがいいかと思います。)
1.正規表現を用いて、ファイル名のみを抽出
送信されたファイル名の最後のセパレータ(Macの場合は「:」、Winの場合は「\」)の後ろ側全て、という抽出方法で、取れると思います。
2.抽出したファイル名から使用不可の文字を検出
3.使用不可の文字があればアラート、そうでなければ(CGIへ?)SUBMIT
なにがしかのヒントになれば幸いです。
さっそくの御回答ありがとうございます。
調べてみた結果、Macの場合はファインダー上では、「:」がセパレータになっているのですが、ブラウザ上(JavaScriptで絶対パスをGetした場合)では「/」がセパレータとなっているようです。
ですから、ファイル名が「test_1/1.pdf」というファイル名(Macではこれはファイル名としてつけられる)は、最後のセパレータ以降を取得すると、「1.pdf」となり、違うファイル名として認識されてしまうのです。
なので、実際の解決方法として、少し悩んでいる次第です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- Windows 10 explorerをedgeで開く方法 2 2022/06/05 14:59
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
Batch: フォルダ内の特定のファ...
-
excelを共有ファイルにすると行...
-
Access VBA を利用して、フォル...
-
特定のエクセルファイルを起動...
-
Excel VBA 処理後データが重た...
-
大量のCSVデータを行列の変換を...
-
【アクセス】「ほかのユーザー...
-
tmpファイル なぜできる?削除...
-
相手のPCにVBAからメッセ...
-
(Excelマクロ)datファイルをエ...
-
『ファイルの上書きの確認』ダ...
-
VBAでCSVファイルが使用中かど...
-
JSONファイルの置き場所について
-
事務の派遣で働いています。多...
-
テーブルからHibernateのマッピ...
-
ファイルの置き換えについて教...
-
テキスト内容の削除方法
-
AccessVBAで作成したExcelファ...
-
【VBA】異なる行だけを抜き出す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】[Expression.Error] ...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
VBAでCSVファイルが使用中かど...
-
社内Excel共有ブックでの保存ト...
-
Access VBA を利用して、フォル...
-
(Excelマクロ)datファイルをエ...
-
AccessVBAで作成したExcelファ...
-
事務の派遣で働いています。多...
-
excelを共有ファイルにすると行...
-
【アクセス】「ほかのユーザー...
-
拡張子が「cda」のファイルを聞...
-
月が変わったら自動でシートが...
-
Excel VBA 処理後データが重た...
-
WEBクエリが使えない場合のHPデ...
-
access関数を説明できる方いま...
-
ファイルの途中に文字列を挿入
-
特定のフォルダに入れたファイ...
-
tmpファイル なぜできる?削除...
おすすめ情報