[PHP-users 18831]アップロードしたファイルが壊れる

Tadayuki Motoyama motoyama @ clinks.jp
2003年 11月 6日 (木) 19:19:35 JST


はじめまして。本山と申します。

PHPで開発を行うことになり、
このMLに参加させていただきました。

長メールです。申し訳ありません。


早速質問なのですが、
以下のようなスクリプトを使って、
ファイルをアップロードしたのですが、
アップロードされたファイルが壊れてしまい、
内容が正しく表示されません。

== SCRIPTS ================================================

-- upload.html --------------
<BODY>
<FORM ENCTYPE="multipart/form-data" ACTION="./fileview.php" METHOD="POST" name="upload">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="4194304">
ファイル名<INPUT type="file" name="userfile"><INPUT type="submit" value="アップロード">
</TABLE>
</FORM>
</BODY>

-- fileview.php  -------------------
<?php

// debug用
print $HTTP_POST_FILES['userfile']['name'];
print $HTTP_POST_FILES['userfile']['type'];
print $HTTP_POST_FILES['userfile']['size'];
print $HTTP_POST_FILES['userfile']['tmp_name'];

$userfile_temp = $HTTP_POST_FILES['userfile']['tmp_name'];

readfile($userfile_temp);
?>

== SCRIPTS ===============================================

# ファイルを表示するスクリプトを作りたいのではなく、
# 実際は、move_uploaded_file()で 実ファイルへコピーして
# 処理をするのですが、tempファイルとして保存されてた時点で
# ファイルが壊れているのを確認するためこういうスクリプトになっています。

例として、以下のような test.txt を送信した場合
--  test.txt ----------------------
1111111111111111111111111
2222222222222222222222222
3333333333333333333333333
        : 
9999999999999999999999999
0000000000000000000000000
1111111111111111111111111
        :
        : ( 数字の繰り返しが続く)
        :
8888888888888888888888888
9999999999999999999999999
0000000000000000000000000
--  test.txt ここまで ---------------

tempファイルは、
-- temp -----------------
1111111111111111111111111
2222222222222222222222222
3333333333333333333333333
        :
0000000000000000000000000
R3333333
4444444444444444444444444
        :
8888888888888888888888888
9999999999999999999999999
0000000000000000000000000
-- temp ここまで --------------

という風に、途中が変になってしまい、
ファイルサイズも、1560バイト → 1941バイト と変わっています。

あれこれ設定やスクリプトを見直したり、
過去ログを調べたりしてみたのですが、
どうしても解決できません(号泣)。

どなたか、ご存知の方はご教授ください。

環境は、
Red Hat Linux 9
Apahe 2.0.40
PHP 4.2.2
です。

ちなみに、実環境は、
http://pstudio.no-ip.com/upload.php
に置いてあります。

よろしくお願いします。


------------------------------------------
 Tadayuki Motoyama : motoyama @ clinks.jp


PHP-users メーリングリストの案内