![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Perl
my $fhandle = $query ->upload('A');
HTML
<INPUT TYPE="HIDDEN" VALUE="C:\temp\1.txt"/>
ボタンクリックで、JavaScriptでHTMLのhiddenに値をセットしています。
その値をPerlでuploadすると、値がセットされません。
<INPUT TYPE="FILE" で、手動でセットすると上手くいきます。
なんんとかHIDDENでできないでしょうか?
FILEでしか駄目な場合、JavaScriptで、FILEにセットする方法をご教授下さい。
今、現状はIFRAMEでFILEで選択したファイルパスをボタンクリックで、メインのFORMのHIDDENに渡して、CGIを呼んでいます。
No.2ベストアンサー
- 回答日時:
<input type="file"> に対しては、ブラウザ側のセキュリティの配慮により、valueの初期値を設定することができません。
あとからJavaScriptでも操作できないようになっています。もしこれが可能になってしまうと、ローカルファイルを勝手にアップロードさせることができるようになってしまいます。
JavaScriptを併用すれば「ページを見ただけでファイルをアップロードさせる」も可能ですよね。
Windowsのレジストリなど、パスやファイル名がほぼわかっているファイルであればなおさら危険性が高まります。
なので、一旦必ずファイル選択ダイアログを出すか、テキストボックスに手でファイル名を入力させてからでないとアップロードはできません。
hiddenでファイルをアップロードするのは現時点では無理ではないかと思います。
No.1
- 回答日時:
Perlの問題ではなく、HTMLとJavaScriptの方の問題です。
> 現状はIFRAMEでFILEで選択したファイルパスをボタンクリックで、メインのFORMのHIDDENに渡して
INPUT TYPE=FILE 以外ではファイルをアップ(ファイルの内容を送信)することはできません。HIDDEN で渡しても、「C:\temp\1.txt」という文字列がCGIに送信されるだけです。
フォームでのファイル送信は、INPUT TYPE=FILE でしか出来ません。
さらに、セキュリティ的な問題から、INPUT TYPE=FILE で、送信するファイルのファイル名をJavaScript等から書き換える(指定する)ことはできません。ファイル名を自由に替えられるということは、クライアントのPC内にあるどんなファイルでも送信できることになり、悪意のあるスクリプトが情報を盗み出すことが可能になるからです。
つまり、基本的には「INPUT TYPE=FILE で、ファイルを選択して、それをそのまま送信する」以外の方法でファイルをアップすることはできないのです。
ただし、HTML5では条件は変わります。HTML5で新設された File API を使えば、
INPUT TYPE=FILE で指定したファイルの内容を JavaScript で読み出すことが可能になります。
(上述のセキュリティ観点から、自由にファイルを指定することはできません。読み込めるのはあくまで INPUT TYPE=FILE で、利用者が指定したファイルだけです)
これを使えば質問者さんの要望には沿ったものを実現可能ですが、
・HTML5 に対応したブラウザでしか使えない(Internet Explorer は対応してない)
・JavaScriptのプログラムが必要(iframeの方のINPUT TYPE=FILE で指定したファイルを読みとって、メインのフォームの送信データに変換するようなスクリプトを作る必要があります)
といったことになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
VB2008 iniファイルの全セクシ...
-
モーダルダイアログでオートコ...
-
「Active X Inet」と「WinInet...
-
インタープリンタとファイルコ...
-
ExcelのVBAコードについて教え...
-
CSVファイルの時刻の形式について
-
MT-4トレード結果をエクセルに...
-
エクセルVBAでメールの自動作成...
-
latexを使用した文章記述(ペー...
-
C言語のソースからコメントを抜...
-
テキストファイル内容の、16進...
-
CSVファイルをブラウザで、...
-
[VB.NET] 処理の高速化を行いた...
-
Microsoft Outlookで、vCardを...
-
メール 添付フォルダ テキス...
-
2ギガ以上のファイルを日本語名...
-
RGBデータからBMP画像へ
-
VBA。開いているテキストファイ...
-
テキストボックスから読み取り判断
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
HTMLテキストリンクでExcelファ...
-
Eclipseで検索ができなくなった
-
VB6.0のメモリリークについて
-
main関数のコマンドライン引数...
-
2GB以上のファイルを扱う方法
-
サイトマップにサブドメインを...
-
ファイル更新日取得
-
ファイル作成日時と更新日時を...
-
エディットボックスの内容をテ...
-
【VBA】印刷マクロのループ処理...
-
<input type="file" で初期値...
-
【VBA】複数CSVの特定範囲を1つ...
-
C++によるファイル送受信プログ...
-
GetOpenFileName()について
-
VB2008 iniファイルの全セクシ...
-
IMEのモードを強制的に変えるには
-
ファイル内容を比較する方法
おすすめ情報