- ベストアンサー
IEで<INPUT TYPE='file'>のvalueからファイル名のみを取得したい
こんにちは。 まだご質問させていただきます。 皆様、宜しくお願い致します。 環境:IE6.0以上 (NN未対応) フォームを利用してファイルのアップロードをしています。 その中でサーバがLINUXのため、登録しようとしているファイル名が適切であるかを判断したく、全角及び半角カタカナが含まれていた場合、alertでERRORを出したいのですが、まず1.ファイル名の取得がうまくいきません、2、半角カタカナのCHECKがうまくいきません。 ご指導のほど、宜しくお願い致します。
- MMM-SRV
- お礼率86% (32/37)
- JavaScript
- 回答数4
- ありがとう数2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
えーとですね。 fullpath = 'C:\wwww\wwww\abc.jpg'; これのファイル名だけ取り出すには、 filename = fullpath.substring(fullpath.lastIndexOf("\")+1, fullpath.length); というスクリプトを組めば可能です。 JavaScript もホントは正規表現使えるんですけどね。 まぁ、別にどういう方法でやっても結果は同じだし。
その他の回答 (3)
- michisanpo
- ベストアンサー率36% (7/19)
<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ボタンはきき ませんよ。一度試してみて下さい。
>ディレクトリの取得はできるのですが、欲しいのはディレクトリを除いた、ファイル名のみなのです 俺がこのアイデアを使ったときも、欲しいのはファイル名だけでしたよ。 他人のディレクトリなんか覗いたって面白くないですしねー(笑) s/[^\\\/]*$/$&/; 正規表現が使用可能であれば、これでファイル名が取り出せます。 また、これと同じことをするロジックを別途組めば、Cや JavaScript などでも取り出せます。
補足
deagle様 至急の用件が入ってしまった為、遅くなりました。 すみません。。。 素人なりにいろいろ調べてみたのですが、どうしても わかりません。 >s/[^\\\/]*$/$&/; これ↑は何を指しているのでしょうか? > >正規表現が使用可能であれば、これでファイル名が取り出せます。 >また、これと同じことをするロジックを別途組めば、Cや JavaScript などでも取り出せます。 JavaScriptで取り出したいのです!! どういうロジックを組めばいいのでしょうか?
クライアント側で、 <input type="hidden" name="filename"> と定義しておき、onSubmit イベントで document.FORM.filename.value = document.FORM.file.value; とコピーしてしまう方法はどうでしょう? 俺はこうやってますけど。
補足
deagle様 早速のご回答ありがとうございます。 ちょっと私の思いと異なっていたようです。 ディレクトリの取得はできるのですが、欲しいのはディレクトリを除いた、ファイル名のみなのです。
関連するQ&A
- ファイルアップロードの元ファイル名が取得できない
ローカルのファイルをサーバにアップロードするCGIを作成しました。 その中で、フォームのname属性から元ファイル名を拾おうとしています。 IEでは上手くいくのですが、ネットスケープやオペラからでは、サーバ側でファイル名を取得できません。 IEではまったく問題ないので、ブラウザ固有の問題なのかと考えているのですが、どなたか、同じような経験された、解決された方、いらっしゃいますか?
- 締切済み
- その他(プログラミング・開発)
- [IE5.5]INPUT TYPE=FILEのREADONLYについて
先週まで、IE5.0でHTMLを書いておりました。 今週なんとなくIE5.5 SP2にバージョンアップしました。 そしたら、以下の部分が動作しなくなってしまいました。 ----------------------------------- <INPUT TYPE="FILE" READONLY="true"> ----------------------------------- 前任者が作成したソースですので、記述に誤りがあるかもしれませんが、 IE4.0、IE5.0では何も問題なく動作しております。 しかしIE5.5だと、ファイル参照のボタンは表示されているのですが、 クリックしても何の反応もありません。 ちなみにREADONLY属性を取り除くと、ファイル選択ダイアログが表示されました。 しかし、ファイルを選択した後サーバへアップロードしており、 アップロードされたファイル名をデータベースに書き込む処理がありますので、 万が一、アップロード後にファイル名が書き換えられてしまうと、 サーバとデータベースとの整合が取れなくなってしまう為、 どうしても編集不可にしたいのです。 どなたかご存知の方が見えましたらご教授願います。 IE5.5では、<INPUT TYPE="FILE">にREADONLY属性は使えないのでしょうか? また、別の方法での対処方法などはないでしょうか?
- 締切済み
- HTML
- 全角のファイル名,フォルダ名
企業のHPを分担で作っていますが、ある者の作成した部分に多数の全角ファイル名,全角フォルダ名が使われています。また、半角名のものも途中にスペース(半角)の含まれているものがあります。(彼はIBM/HPBを使っています) 一応、手元のブラウザ(IE5.5,Netscape7.0)では正常に見られるのですが、このままアップロードしてよろしいでしょうか?
- ベストアンサー
- その他(インターネット・Webサービス)
- ファイル名を付けるときで。
こんにちは。XPに限ったことでは無いんですが、自分のPCがXPだったので、こちらに質問を投稿しました。 ファイル名を付けるときなんですが、数字とか英字を使うときは半角を使うようにしています。 カタカナは全角を使っています。 「!」とか「_」とか使える記号は半角にしています。 「?」を入れると起こられるので入れることがあれば、全角で入れてます。 皆さん、漢字・ひらがな交じりの英字とか数字を使う場合、英字・数字は半角で入れてますか?
- ベストアンサー
- Windows XP
- ファイル名の文字コード
LinuxサーバにWindowsよりFTPで日本語ファイルの ディレクトリやファイルを大量にアップロードしました。 どうやらファイル名がsjisでアップロードされてしまったみたいで Linux上から見るとすべて文字化けしています。 ディレクトリ名とファイル名をsjisからeucへ 変換する方法はあるのでしょうか? よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- 日本語名ファイルのダウンロードについて
Windowsマシン上でブラウザを立上げ、LINUXサーバーにアクセスしてファイルをダウンロードしたいのですが、ファイル名が全角文字だと、NOTFOUNDになってしまいます。 ダウンロードを行なうjavascriptは以下のとおりです。 function download(){ document.location.href = "http://190.XXX.XXX.XXX:7001/temp/download/日本語名ファイル.txt" } システムは、javaで開発しています。(Servlet,JSP,Beans) サーバーのアプリケーションは、Weblogic6.0です。 ブラウザは、IE5.5です。 サーバーがWindowsマシンの場合は、上の方法で正常にダウンロードできます。 サーバーがLINUXマシンの場合、全角文字の部分をEUCに変換しておくと、ダウンロードはできるのですが、ダウンロード後のファイル名が化けてしまうので、具合が悪いです。 日本語名ファイルをダウンロードするよい方法がありましたら、教えてください。
- ベストアンサー
- その他(OS)
- IE8で<input type="file">のテキストエリアをクリア
IE8で、<input type="file">を使用していますが、 BMPファイルを選択した場合には、テキストエリアをクリアしたいのですが、 javascriptで行うと、エラーになってしまいます。 テキストエリアは複数あり、javascriptに可変変数を渡しています。 どなたか、解決方法をご存知の方、いらっしゃいましたら、 ご教授願います。よろしくお願い致します。 具体的なコードは、以下の通りです。 <script type="text/javascript"><!-- function preview_image(obj_image, image_id, oID1, oID2) { var ext = document.getElementById(oID1).value; if(ext.match(/\.(bmp)$/i)){ alert("bmpファイルは、アップロードできません。"); document.getElementById(oID2).src = "/img/dummy.jpg"; obj_image.style.color='#FFFFFF' return false; } else { document.getElementById(image_id).src= obj_image.value; document.getElementById(image_id).style.display="inline"; } }
- 締切済み
- JavaScript
- 日本語ファイル名のアップロードとダウンロード
日本語ファイル名のデータを、ブラウザ上のフォームを使ってWEBサーバにアップし、それらをブラウザに一覧表示させてリンクを張り、そのリンクをクリックするとダウンロードできるようなPHPスクリプトを作りたいと思っています。 URLエンコードを行い、日本語ファイル名を半角文字列に置き換えれば問題ないだろうと思ったのですが、URLエンコードされたサーバ上のファイルにさえアクセスできません。 サーバの文字コードがEUCなので、すべてEUCで作成しているのですが…。 例えば、「あ.txt」というファイルを、EUCで作成したフォームでURLエンコードをしてアップロードすると、「%A4%A4.txt」というファイルがサーバにアップされます。 そこで、「http://。。。/%A4%A4.txt」にブラウザでアクセスすると、403エラーが出ます。 次に、ブラウザに一覧表示させたリンク文字列を右クリックして保存しようとすると、「?¢.txt」というファイルを保存しようとするため、ファイルが見つからないとのエラーが出ます。 いろいろな文字コードでファイル名をエンコードしたり、PHPファイルの文字コードを変更したりして試してみたのですが、うまくいきませんでした。 どうすればいいのか教えていただけないでしょうか? なお、日本語は使わない方がいいということは承知しておりますが、数十個ある日本語ファイル名のデータを頻繁に更新しますので、その都度ファイル名を半角に書き換えることは避けたいと思っています。 元々のファイル名も、仕様により日本語である必要があります。 以下、当方の環境を記載いたします。 「ローカル」 WinXPsp2、IE6 「サーバ」 共有レンタルサーバ Apache
- 締切済み
- PHP
- ジオシティーズでの画像アップロードについて
コンピューターにはド素人なので、大変恐縮ですが、よろしくおねがいします。 ジオシティーズで無料でホームページを作ろうと思い、画像をEZアップロードにてアップロードしようとしました。 が、「ファイル名が無効です。」と出てきてアップロードできません。 調べてみると「ファイル名に全角文字(ひらがな、カタカナ、漢字など)と半角カタカナ、空白が含まれている場合はアップロードできません。」とあります。 自分のアップロードしようとしていたパソコン内の画像ファイル名にはひらがな・漢字・空白が有り、このままではアップロード出来ないことがわかりました。 しかしどうしてもホームページにこの画像をアップロードしたいのです。 何か方法は無いでしょうか。よろしくおねがいします。
- ベストアンサー
- レンタルサーバ・ASP
お礼
deagle様 いろいろとご指導、ありがとうございました。 「\」記号の使えなかった理由が判明し、解決しました。(javascriptでは「\」を文字列として扱いたい場合は、「\\」と記述するんですね。) また、悩んだときには投稿させて頂きたいと思いますので、その際も宜しくお願い致します。
補足
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 ); }