プロが教える店舗&オフィスのセキュリティ対策術

ファイルのアップロード機能を実装したいのですが
<input type="file" />タグは画面に表示したくありません。

そのため「アップロードファイルを指定」ボタンを押すとダイアログが開き
ユーザがファイルを指定するよう実装してあります。

以下のコードを書いたのですが「指定しない」ボタンでは正常に動作しましたが
「アップロードファイルを指定」ボタンでは、アクションも呼ばれませんでした。


これは何が問題なのでしょうか?
教えていただけると助かります。

もしかして、javascriptから<input type="file" />を触る場合の
セキュリティ制限でしょうか?


/**************** 環境 ****************/
jquery 1.3.2
php 5
ie7

/**************** html ****************/
$(document).ready(function(){
$('#btnyes').click(function() {
var oldval = '';
$('#fileUpload').click();

// パスが指定されればpost
if($('fileUpload').val() != oldval)
{
execSubmit();
}
});
});

function execSubmit()
{
$('#formBeforeEdit').submit();
}

/**************** javascript ****************/
<form name="formUpload" id="formUpload" action="/xxx/xxx" method="post" enctype="multipart/form-data">
<input type="button" name="yes" id="btnyes" value="アップロードファイルを指定" />
<input type="button" name="no" id="btnno" onclick="execSubmit();" value="指定しない" />

<input type="hidden" name="MAX_FILE_SIZE" value="10485760" />
<input type="file" name="fileUpload" id="fileUpload" style="display: none;"/>
</form>

A 回答 (1件)

> もしかして、javascriptから<input type="file" />を触る場合の


> セキュリティ制限でしょうか?

おそらくそうでしょう。
以前実験しましたが、コードでclickを使ってファイル選択ダイアログを表示した場合は、そのままsubmitを実行できないようになっているようです。
<input type="file">タグにnameを指定しないと、submitできる時もありますが。
    • good
    • 0
この回答へのお礼

> おそらくそうでしょう。
やはりそうですか。

<input type="file">タグのクリックイベントを走らせ
ユーザさんにファイルを選択して貰っているのでいけるかと思ったんですが
無理なのですね。。

どうもありがとうございました。

お礼日時:2010/01/31 14:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!