
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INDIRECT 横に再度抽出したい
-
Strawberry Perl for Windows ...
-
perlのプログラミング 部分入れ...
-
Perlでファイルの末尾から指定...
-
perl の open について教えてく...
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel VBA】取り込んだファイ...
-
Eclipseで検索ができなくなった
-
0バイトのテキストファイル
-
VBAで、JPG写真の撮影日時を読...
-
C++によるファイル送受信プログ...
-
main関数のコマンドライン引数...
-
【VBA】複数CSVの特定範囲を1つ...
-
ファイル作成日時と更新日時を...
-
Javaのファイルダウンロードに...
-
HTMLテキストリンクでExcelファ...
-
2GB以上のファイルを扱う方法
-
openglで音楽を再生する
-
エディットボックスの内容をテ...
-
VB2008 iniファイルの全セクシ...
-
VB6でTIFF図のプロパティを...
-
GetOpenFileName()について
-
EUCコードをSHIFT-JISに変換したい
-
タスクバーのアイコンについて
-
C++.NET 2003 「空のドキュメ...
-
【VBA】印刷マクロのループ処理...
おすすめ情報