perlで画像アップロードするプログラムなのですが、手元のWindowsでは問題ないのですが、

さくらインターネットの「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;

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/04/22 10:07:21
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TREEG No.1

回答回数255ベストアンサー獲得回数34

ポイント60pt

当方も、さくらを使っております。

.

同一のプログラムをアップロードし、試してみましたが、

問題無く動作します。

.

サーバ情報は下記の通りです。

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の設定が間違っている。

などかもしれません。もう少し詳しく書いていただけると適切なアドバイスができるかと思います。

id:takeru-c

コメントありがとうございます。

▼サーバー情報です

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...

よろしくお願い致します。

2009/04/21 15:11:49
  • id:takeru-c
    自己解決できましたー。

    .htaccessに下記を追加することで正常に表示されました。

    AddHandler image/gif .gif
    AddHandler image/jpeg .jpeg .jpg .jpe
    AddHandler image/png .png

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません