都道府県穴埋めゲーム

Perlのファイルのアップロードの方法についてお聞きします。

&ReadParseを用いた方法で、
$file = $in{'TENSOU'};で$file自体にデータが入るので
簡単だなと思っていましたが、送信元と送信後のファイルが若干違っていました。
使い方が間違っているのでしょうか?

以下、サンプル

◆HTML側

<FORM ACTION="up.cgi" ENCTYPE="multipart/form-data" METHOD="POST"><P>
ファイル: <INPUT TYPE="file" NAME="TENSOU" SIZE="32"><BR>
<INPUT TYPE="submit" VALUE="送信">
</FORM>


◆Perl側 &ReadParseの例を用いた方法

#!/perl/bin/perl
#!/usr/local/bin/perl

use CGI;
use CGI::Carp qw(fatalsToBrowser); #--->エラー対策

require 'cgi-lib.pl';
require 'jcode.pl';

$BUFSIZE = 2048;

&ReadParse; # ==> 強力な変換

$file = $in{'TENSOU'}; # ==> 実態自体がデータなので、取り扱いしやすい
$file_size = length($file);

$file_size *= ($BUFSIZE / 1024);

open(OUT, "> test.jpg");
print(OUT $file);
close(OUT);

print "Content-type: text/html\n\n";
print "$file_size(KB)<br>\n";
print "<a href=\"test.jpg\">テスト</a>\n";
exit;

A 回答 (1件)

はじめまして。



cgi-lib は使わんので分からんのですが、気になったところだけ。

> $file_size *= ($BUFSIZE / 1024);
これってなんですか?

あと、OSなんですか? windows のばあいは
>open(OUT, "> test.jpg");
>print(OUT $file);
>close(OUT);

で、バイナリデータを書き込むと死ねます・・・
    • good
    • 0

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


おすすめ情報