WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:ファイルアップロードサイズ異常

0:[投稿] 鈴木 真二 [MAIL] [2002/08/12 17:57 ][環境:UNIX系+IE UNIX系+Perl]

初めて質問させていただきます。
鈴木と申します。

ファイルをアップロードする処理をPerlで作成しているのですが(下記ソース)、以下の現象で悩んでおります。
何か原因究明のヒントでもあれば教えていただけないでしょうか。

基本的には正常にアップロードされますが、なぜか4096Byteのファイルと4095Byteのファイルだけが4094Byteでアップロードされてしまいます。
アップロードされたファイルをバイナリエディタで見ると最後のByteが欠けた状態になっています。
4096Byteと4095Byte以外のサイズのファイルは問題なくアップロードされます。(倍の8192Byteも問題ありません)
バッファサイズもいろいろ試してみましたが、現象は変わりません。
************************************************************
$BUFSZ = 2048;
while($bytesread = read($file_name, $buffer, $BUFSZ)){
    $file .= $buffer;
}
# ファイルを指定ディレクトリにコピー
open(OUT, "> $server_filepath")
    or exitError("XXXXXXX");
binmode(OUT);
print(OUT $file);
close(OUT);
************************************************************
よろしくお願いいたします。


1:[回答] andi [2002/08/12 19:29 ]

全く試していませんが、cgi-lib.plやCGI.pmを利用しても同様の現象になるのでしょうか?


2:[回答]   [2002/08/12 20:49 ]

アップロードされるデータに問題があるとか?


3:[回答] 鈴木 [MAIL] [2002/08/13 11:54 ]

cgi-lib.plやCGI.pmを利用しても同様の現象になります。

アップロードするファイルは単にテキストを並べてちょうど4096バイトになる様にして作ったファイルです。

環境に問題があるのでしょうか。
サーバ:Solaris2.6
Webサーバ:Apache
言語:Perl5.0
です。


4:[回答] ひでちゃん [2002/08/13 16:45 ]

文字コードに疎いのだけど、バッファーで分割される時に複数バイトで分割されて
たまたま次のバッファの頭がEOFなのが原因なんて事有ります?


5:[回答] 鈴木 [MAIL] [2002/08/14 15:37 ]

ABCDEFGHIJKLMN........といった形で4096バイトにしたファイル
あるファイルをTarで固めて作成して4096バイトにしたファイル
等いくつかのファイルパターンを試してみたのですが、やはり結果は同じでした。

たまたまバッファの頭がEOFという原因ではなさそうなのです。

環境変数等何か原因になりそうなところは無いでしょうか。


6:[回答] ふじ [URL] [2002/08/14 22:03 ]

手元の環境 (Perl5.6, CGI.pm 2.77)でも、同様の結果になりました。
4096byte のが 4094byteになってしまう。

最新のCGI.pm(2.81)にバージョンを上げたところ、正常に 4096byteで
アップロードできました。

2.81に添付の cgi_docs.html の Revision History には、

Version 2.78
(中略)
4.Patched bug which caused file uploads of exactly 4096 bytes to be truncated to 4094

とありますので、CGI.pm のバージョンを上げれば解決すると思います。
# こんなバグが残ってたとは知らなんだ。


7:[完了] 鈴木 [MAIL] [2002/08/15 13:30 ]

回答いただいた対応で解決しました。

大変助かりました。
ありがとうございます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World