何度もPerlのところで質問していますが・・・今回は
ファイルのアップロードをするときに少々もんだいが出てきてしまうことについてです。<input type="file"... を使います
以下の二つのファイルで構成しています(一部分だけ)
---form.html---
<form action="upload.cgi" method="POST" ENCTYPE="multipart/form-data">
<textarea name="input_textarea" rows="20" cols="70"></textarea>
<input type="file" name="File" size=32>
<input type-"submit" value="ok">
---upload.cgi---
[formからの情報を配列変数に代入するスクリプト・・・]
use CGI;
$query = new CGI;
$filename = $query->param('File'); # ファイル名の取得
$type = $query->uploadInfo($filename)->{'Content-Type'};
同じファイル名が無いことを確認して、保存
という処理を行っています。upload.cgiの中身がとぼしくて申し訳ありません。
かなり省略してます。
さて、、問題となるのは ENCTYPE="multipart/form-data" とすると
配列変数にFORMからの情報がうまく入ってくれないということです、
かといってENCTYPE="multipart/form-data"を外すと CGI.pm を使った
ファイルのアップロードができなくなってしまいます。
ENCTYPE="multipart/form-data" のオプションをつけて
配列変数にテキストエリアの内容を入れるにはどうすればいいのでしょうか。
テキストエリアを取り除くとファイルのアップロードはできます。
ただ、ファイルと入力したテキストを同時に処理することができないんです。
No.1ベストアンサー
- 回答日時:
うちではできましたよ。
ちなみに「配列変数」ってのが、、、。
どこで配列に値を格納しているのでしょうか?
そのあたりで妙な事になっているのですかね。。。?
-wオプションつけて変数名に誤りがないか調べてみるのもいいかもしれません。
以下かなり適当に作ってしまったサンプル。
でも動作確認済み。
------------------------------
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM ENCTYPE="multipart/form-data" METHOD="post" ACTION="upload.pl">
<TEXTAREA NAME="textarea"></TEXTAREA>
file : <INPUT TYPE="file" NAME="file">
<INPUT TYPE="submit" NAME="submit">
</FORM>
</BODY>
</HTML>
------------------------------
------------------------------
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;
my $filename = $cgi->param('file');
my $textarea = $cgi->param('textarea');
my $type = $cgi->uploadInfo($filename)->{'Content-Type'};
open (OUTFILE,">>/tmp/feedback");
while ($bytesread=read($filename,$buffer,1024)) {
print OUTFILE $buffer;
}
print "Content-type: text/html\n\n";
print <<"_HERE_";
<html>
<body>
たぶん処理は正常に終了しています。<BR>
textarea : $textarea<BR>
type : $type
</body>
</html>
_HERE_
------------------------------
この回答への補足
なんとかできました、ありがとうございました、、
テキストエリアの情報は$textarea = $cgi->param('textarea');
で取得するのではなく、一般的なcgi-lib.plを使った方法で取得したかったわけです。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP imageフォルダに、画像をリサイズして保存する時のファイル名を変更したい 1 2023/05/30 11:39
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
csvファイルの横方向への改行に...
-
perl ファイルが開かない
-
VBAコードを張り付け後のエクセ...
-
重複ファイル名ある場合ファイ...
-
fopen64について
-
AutoNts
-
ファイル全てを .xlsm に変更し...
-
行を指定して削除する方法PERL
-
cgiでサーバーにファイルを追加...
-
VBA テキストファイルを読み取...
-
Perlでファイルの末尾から指定...
-
VBAで巨大なファイルの途中から...
-
ファイルがオープンできない
-
Perlで特定文字列から特定文字...
-
Perlで行をさかのぼって削除す...
-
C#でCSVファイルを逐一更新したい
-
複数のCSVファイルを一つのCSV...
-
データの日付でソートをしたい
-
CSVが可変長の場合の検索方法
-
FindFirstFileとFindNextFileで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
window.open でのファイル指定方法
-
fgets で値が取得できない
-
VBA テキストファイルを読み取...
-
ファイル全てを .xlsm に変更し...
-
csvファイルの横方向への改行に...
-
Firefox で file:// で始まる U...
-
VBAコードを張り付け後のエクセ...
-
python renameについて
-
JSP URLに表示される拡張子 .jsp
-
foreach内での変数の扱い?
-
HTMLのフォームで画像と文...
-
drtファイルはどうしたら開...
-
PerlでのUseless use...
-
MySQLにバイナリデータを正常に...
-
複数ファイルを1つにするシェ...
-
テキストファイルの高速な読み...
-
巨大なテキストの最終行を取得...
-
並び方、
-
ファイルの存在の有無を確かめ...
-
Perl の「stringify」の意味に...
おすすめ情報