
HTMLのフォーム文で、ファイルをアップロードしてもらい、それが.jpg, .jpeg , .pdf ファイルであった場合のみ、アップロードできるような仕組みをJavascriptを利用して作成中ですが、うまく行きません
(ソース: test.php)
--ここから--
<html></body>
<SCRIPT language="JavaScript">
function mailSubmit(){
if (document.form_mail.upfile.value == "" ) {
alert (" ファイルを選択してください。");
flag = 1;
return;
} else {
if (document.form_mail.upfile.value.match(/[jpg]$/i)||(/[pdf]$/i)){
alert ("添付ファイルはJPEG,PDFに限ります");
flag = 1;
// return;
}
}
if(flag){
return false;
} else {
document.form_mail.submit();
return true;
}
}
</script>
<table>
<!-- === FORMここから === -->
<!-- <FORM METHOD="post" action="<?php print $_SERVER['PHP_SELF']; ?>" NAME="form_mail" ENCTYPE=multipart/form-data> -->
<FORM METHOD="post" action="<?php print $_SERVER['PHP_SELF']; ?>" NAME="form_mail" ENCTYPE=multipart/form-data onSubmit="return mailSubmit()">
ファイル選択<INPUT TYPE=file NAME="upfile" SIZE=50 VALUE=\"$upfile\">
<br>
<INPUT TYPE="button" VALUE=" 送信 " onClick=" javascript:mailSubmit() ">
<INPUT TYPE="button" VALUE=" キャンセル " onClick="javascript:history.back()">
</FORM></body>
</html>
--ここまで--
JPG,JPEG,またはPDFファイルのみにアップロードの許可を与えるにはどうしたらいいでしょうか、(大文字・小文字は不問とします)ご回答いただければ幸いです。
No.3ベストアンサー
- 回答日時:
おはようございます。
> /[jpg]$/i
[jpg]は文字クラスになるので、括弧内の文字の集合、すなわちjかpかgが最後についているか、という事になってしまいます。ですから、
/(jpe*g|pdf)$/i
というような方法である程度チェック可能かと思います。
当然、拡張子を偽装したファイルのアップロードも可能としてしまいますので、出来ればPHP側でファイルタイプ(MIME)のチェックもした方が良いかと思います。ファイルタイプは
$_FILES['upfile']['type']
で取得出来ます。通常、jpegはimage/jpeg、pdfはapplication/pdf、application/x-pdfあたりですね。
JavaScriptだけの判断ではとても危険です(いくらでも偽装出来る)ので、PHP側で再チェックをする事をお進めします。
参考まで。
No.2
- 回答日時:
/jpe*g|pdf/i
これでどうでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javascriptに条件分布ついて(再)
-
複数のformから値を取得する方法
-
ボタン無しでフォーム内容送信
-
javaScriptの変数をJavaの変数...
-
onchangeイベントを強制的に発...
-
return trueとreturn falseの用...
-
<input>の選択肢をプルダウンメ...
-
Formのシリアライズができない
-
RegularExpressionValidatorの...
-
C#(csファイル)とjavascriptと...
-
name = cats[1] という input ...
-
switchを使って四則演算のプロ...
-
データベースの値を判断してラ...
-
テキストボックスにカーソルを...
-
テーブル内のチェックボックス...
-
複数のチェックボックス項目が...
-
idの振り直しについて
-
画面表示とともに、テーブルの...
-
OnClickでURL生成し、飛ばしたい
-
時間表示のタグ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptでASPにデータを渡す
-
Cookieに保存されない
-
Javascriptでlocation.hrefが妙...
-
別ウィンドウへのsubmitの挙動...
-
JavaScript:現在フォーカスの...
-
javascriptで日付+整数+選択...
-
商品ページのフォームのテキス...
-
1つのページにformを2つ設置。2...
-
submitした値を返したい
-
1つのform内に2つのsubmitボタ...
-
別窓ウィンドウから親ウィンド...
-
ページを再読み込み後、再読み...
-
iframe内のformをサブミットす...
-
タブキーでなくエンターキーで...
-
Chromeで複数submit
-
JAVASCRIPT
-
focus()が上手くいかない
-
this.formがundefined
-
フォームのvalueに配列を格納す...
-
ファイル選択と同時にアップロ...
おすすめ情報