さくらインターネットの「FreeBSD 7.1-RELEASE-p4 i386」で試すと添付画像のように壊れてしまいます。
原因がおわかりになるかたはいらっしゃいますか?
#!/usr/bin/perl -w
use strict;
use CGI;
my $query = new CGI;
# ファイル取得
my $fH = $query->upload('filename');
# ファイル保存
my $buffer;
open(OUT, "> file/test.jpg") or die("ファイルの保存に失敗しました。");
binmode(OUT);
while(read($fH, $buffer, 1024)){
print OUT $buffer;
}
close (OUT);
close ($fH) if ($CGI::OS ne 'UNIX'); # Windowsプラットフォーム用
chmod (0666, "file/test.jpg");
print "Content-type: text/html\n\n";
print "<img src=\"file/test.jpg\" /><br />\n";
print "test";
exit;
当方も、さくらを使っております。
.
同一のプログラムをアップロードし、試してみましたが、
問題無く動作します。
.
サーバ情報は下記の通りです。
OSバージョン FreeBSD 7.1-RELEASE-p4 i386
プラン STANDARD
CPU Intel(R) Pentium(R) M processor 2.00GHz
メモリー容量 2GB
Apacheバージョン Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
.
なお、CGIのファイル名をtest.cgiにして、HTML部分は、
<body>
<form action="test.cgi" method="post" enctype="multipart/form-data">
<input type="file" name="filename">
<input type="submit">
</body>
としています。
.
原因としては、テストに使っている、jpgの種類が不適当?(jpgには多くのバージョンが存在します)ちなみに、現在、hatena上ではその添付画像を見ることができません。
HTML部分が間違っている。
CGIやディレクトリのパーミッションが間違っている。
.hataccessの設定が間違っている。
などかもしれません。もう少し詳しく書いていただけると適切なアドバイスができるかと思います。
コメントありがとうございます。
▼サーバー情報です
OSバージョン FreeBSD 7.1-RELEASE-p4 i386
プラン STANDARD
CPU Intel(R) Xeon(R) CPU E3110 @ 3.00GHz
メモリー容量 3.25GB
Apacheバージョン Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e
添付画像は大変失礼致しました。気が付きませんでした。
下記にアップロードいたしました。
http://f.hatena.ne.jp/takeru-c/20090421150434
▼html
<body>
<form action="test.cgi" method="POST" enctype="multipart/form-data">
変換する写真を選択してください:
<input type="FILE" name="filename" size="20" />
<input type="submit" value="変換する" />
</form>
</form>
▼パーミッション
test.cgi 705
/file 705
▼.hataccess
AddHandler cgi-script .rb .cgi
DirectoryIndex index.html index.rb index.cgi
▼テストに使っている画像
適当にウェブにあった画像を保存してテストしていました。
たとえばコレなど↓
http://ca.c.yimg.jp/news/20090421104522/img.news.yahoo.co.jp/ima...
よろしくお願い致します。