No.2ベストアンサー
- 回答日時:
>1,
>-----------------------------7d431c1420724
>この文字列は何を表しているのでしょうか?
formタグでenctype="multipart/form-data"と指定しているので送信データはマルチパートになります。
「-----------------------------7d431c1420724」はパートの区切りを表すバウンダリ文字列です。
>2,
>jpegなどの画像を送信したときには、バイナリデータが送られてきました。それをそのまま保存すれば元の画像になるのでしょうか?
そうです。
>3,
>type="text"も同時に送信してみましたが、通常と違い、%nnにエンコードされずに日本語がそのまま送信されてきました。
>これを通常の%nnで送信されるようにするのは不可能なのでしょうか?
Perlの知識に乏しいので%nnというのがわからないのですが、マルチパート指定で送信するデータをエンコードするのはできないように思います。
ANo.1の回答でも書きましたが、詳細については自分で調べることをお勧めします。
No.3
- 回答日時:
cgi-lib.pl を使えば、あまり悩むことなく取得出来るでしょう。
cgi-lib.plでは、送信量制限があり、2^17=131072以内です。
cgi-lib.plが読めれば、自分でこの制限を書き換えることは可能です。
受け取りコードは、
&ReadParse();
### %in=data; %incfn=filename; %inct=filetype
$filetype =$inct{'file_tag_name'};
$filename =$incfn{'file_tag_name'};
$filedata= $in{'file_tag_name'};
参考URL:http://cgi-lib.berkeley.edu/
回答ありがとうございます。
ファイルのUpは、標準モジュールである、CGI.pmを使用する事にしました。
cgi-lib.plはライブラリであるため、危険性があるとの記述を発見しましたし、それにPerlではモジュールの使用を推奨しているためです。
ファイルのUpや、値の操作をしてくれるライブラリがあることを教えてくれたことに感謝します。
No.1
- 回答日時:
たぶんformのenctypeを指定していないと思うのでmultipart/form-dataを指定
してください。ファイルデータがサーバに送られるようになるはずです。
<form action="hoge.cgi" method="post" enctype="multipart/form-data">
<input type="file">
</form>
Perlでの処理は自分で検索してください。ありふれた処理なのでサンプルコードは
すぐに見つかるはずです。
この回答への補足
いままでは、
read(STDIN, $str, $ENV{'CONTENT_LENGTH'});
で、読み込んでいたのですが、これだと読み込めたデータは
-----------------------------7d431c1420724
になりました。
そこで、perlの%requestから判断して
while(<STDIN>){$str .= $_;}
に変更したところ、
-----------------------------7d431c1420724
Content-Disposition: form-data; name="filedata"; filename="C:\Documents and Settings\subject\My Documents\text\test1.txt"
Content-Type: text/plain
This is test data.
[crlf]format is text
テストです。
ここに改行があります。
-----------------------------7d431c1420724
Content-Disposition: form-data; name="chtext"
test日本語
-----------------------------7d431c1420724--
このようになりました。
補足要求ですが、
1,
-----------------------------7d431c1420724
この文字列は何を表しているのでしょうか?
2,
jpegなどの画像を送信したときには、バイナリデータが送られてきました。それをそのまま保存すれば元の画像になるのでしょうか?
3,
type="text"も同時に送信してみましたが、通常と違い、%nnにエンコードされずに日本語がそのまま送信されてきました。
これを通常の%nnで送信されるようにするのは不可能なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(IT・Webサービス) 301リダイレクトの使い方について 7 2022/04/05 17:50
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- USTREAM スマホで撮影した動画を 3 2023/01/07 10:26
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- その他(コンピューター・テクノロジー) <a href="file:///フォルダ名/ファイル名">リンクテキスト</a>について 1 2023/04/06 22:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAでCSVファイルの特定行を書...
-
Javaで同一のファイルを読み込...
-
ファイルのアップロード方法(Perl)
-
perlで、後ろの行を読んで、前...
-
VB6.0でDB接続する際に切断時の...
-
ExcelをCSV書き出す場合のシー...
-
CGI(Perl)でWeb上から作成...
-
ファイルからある文字列の個数...
-
エクセルVBA コードが同じでも...
-
datファイルってなんですか?
-
タブの色を変更する方法
-
【PHP】アクセス過多でファ...
-
ファイル全てを .xlsm に変更し...
-
VBAでタブ区切りテキストの保存...
-
エクセルVBAで素数だけを出力す...
-
コマンドプロンプトからperlを...
-
perlでcsvファイルを読む(ダブ...
-
Perlで特定行から特定行までを...
-
flockについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでCSVファイルを途中行まで...
-
VBAで巨大なファイルの途中から...
-
ExcelをCSV書き出す場合のシー...
-
VBAでCSVファイルの特定行を書...
-
openした後、closeしないでプロ...
-
ReadLineでの読み出し行を指定する
-
エクセルVBA コードが同じでも...
-
csvファイル改行コードの置換に...
-
C言語でのファイルのデータ更...
-
Perlの変数に文字数制限(容量...
-
perlにて2つのファイル比較
-
JavaでCSVファイルを高速に読む...
-
VB6.0でDB接続する際に切断時の...
-
MATLAB グローバル変数の宣言
-
alarmのタイムアウト後の処理で...
-
DBMとテキストファイルのどちら...
-
perlで、後ろの行を読んで、前...
-
エクセルVBAでCSVファイ...
-
拡張子 ”log” と ” dat” の違い
-
5行おきに5行ずつ抽出するに...
おすすめ情報