• ベストアンサー

IEで<INPUT TYPE='file'>のvalueからファイル名のみを取得したい

こんにちは。 まだご質問させていただきます。 皆様、宜しくお願い致します。 環境:IE6.0以上 (NN未対応) フォームを利用してファイルのアップロードをしています。 その中でサーバがLINUXのため、登録しようとしているファイル名が適切であるかを判断したく、全角及び半角カタカナが含まれていた場合、alertでERRORを出したいのですが、まず1.ファイル名の取得がうまくいきません、2、半角カタカナのCHECKがうまくいきません。 ご指導のほど、宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.4

 えーとですね。  fullpath = 'C:\wwww\wwww\abc.jpg';  これのファイル名だけ取り出すには、  filename = fullpath.substring(fullpath.lastIndexOf("\")+1, fullpath.length);  というスクリプトを組めば可能です。  JavaScript もホントは正規表現使えるんですけどね。  まぁ、別にどういう方法でやっても結果は同じだし。

MMM-SRV
質問者

お礼

deagle様 いろいろとご指導、ありがとうございました。 「\」記号の使えなかった理由が判明し、解決しました。(javascriptでは「\」を文字列として扱いたい場合は、「\\」と記述するんですね。) また、悩んだときには投稿させて頂きたいと思いますので、その際も宜しくお願い致します。

MMM-SRV
質問者

補足

deagle様 すみません。夏期休暇に入ってしまい回答が確認できていませんでした。 今日、一日格闘したのですがやっぱりダメでした。 区切りの文字を"/"(スラッシュ)にすると希望通りなんですが、"\"に置き換えると、ステータスバーに黄色い「!」のスクリプトエラーが出てしまいます(ノ_・。) if(document.form1.file1.value.length!=0){  var fullpath = document.form1.file1.value;  var file = fullpath.substring(fullpath.lastIndexOf("/")+1, fullpath.length); alert( file ); }

すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.3

<html> <head> <script language="JavaScript"> <!-- function check(){ if(charchk(self.document.file.file.value)==false){ alert("error"); return false; } return true; } function charchk(eiji){ var i; var len = eiji.length; for(i=0;i<len;i++){ if(!((eiji.charAt(i)>="A" && eiji.charAt(i)<="Z")||(eiji.charAt(i)>="a" && eiji.charAt(i)<="z")||(eiji.charAt(i)>="," && eiji.charAt(i)<="|")||(eiji.charAt(i)>="0" && eiji.charAt(i)<="9"))){ return false; } } return true; } //--> </script> </head> <body> <form name = "file" action = "xxxxx.cgi" method = "post" onSubmit="return check()" > <input type = "file" name = "file" size=10><br> <input type = "submit" value = " ON " > </form> </body> </html> -------------------------------------------------- 全角文字かどうか判別するのではなく、半角英数字かどう かを判別し、それ以外の入力は無理というjavascriptです。 コンマやその他の記号の判別はこれでいいのか解りません が、とりあえずこれで、全角文字だと、ONボタンはきき ませんよ。一度試してみて下さい。

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.2

>ディレクトリの取得はできるのですが、欲しいのはディレクトリを除いた、ファイル名のみなのです  俺がこのアイデアを使ったときも、欲しいのはファイル名だけでしたよ。  他人のディレクトリなんか覗いたって面白くないですしねー(笑)   s/[^\\\/]*$/$&/;  正規表現が使用可能であれば、これでファイル名が取り出せます。  また、これと同じことをするロジックを別途組めば、Cや JavaScript などでも取り出せます。

MMM-SRV
質問者

補足

deagle様 至急の用件が入ってしまった為、遅くなりました。 すみません。。。 素人なりにいろいろ調べてみたのですが、どうしても わかりません。 >s/[^\\\/]*$/$&/; これ↑は何を指しているのでしょうか? > >正規表現が使用可能であれば、これでファイル名が取り出せます。 >また、これと同じことをするロジックを別途組めば、Cや JavaScript などでも取り出せます。 JavaScriptで取り出したいのです!! どういうロジックを組めばいいのでしょうか?

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.1

 クライアント側で、 <input type="hidden" name="filename">  と定義しておき、onSubmit イベントで   document.FORM.filename.value = document.FORM.file.value;  とコピーしてしまう方法はどうでしょう?  俺はこうやってますけど。

MMM-SRV
質問者

補足

deagle様 早速のご回答ありがとうございます。 ちょっと私の思いと異なっていたようです。 ディレクトリの取得はできるのですが、欲しいのはディレクトリを除いた、ファイル名のみなのです。

すると、全ての回答が全文表示されます。

関連するQ&A