PC から Linux サーバーにファイルをアップロードするための perl CGI スクリプトがあります。
独自の HTML フォームで CGI への呼び出しを記述して実行すると、意図したとおりに機能しますが、同じ呼び出しを既存のアプリケーションに配置すると、ファイルはサーバー上に作成されますが、データは取得されません。サイズゼロです。
環境変数 (から抽出できるもの) を比較し%ENV
ましたが、原因のようには見えません。実際に、自分の HTML スクリプトのいくつかの ENV を、既存のアプリケーションが使用していた値に変更してみましたが、問題は明らかになりませんでした。
ログには何も手がかりがありません。アップロード操作は成功したと考えています。ユーザーは両方のテストで同じです。アクセス許可が問題になると、ファイルはサーバー上に作成されません。
IE でも Chrome と同じ結果が得られます (アプリケーション内からではなく、独自の HTML スクリプトから動作します)。
比較するために、どのような特定のセットアップを検討する必要がありますか?
これはアップロードコードです:
if (open(UPLOADFILE, ">$upload_dir/$fname")) {
binmode UPLOADFILE;
while (<$from_fh>) {
print UPLOADFILE;
}
close UPLOADFILE;
$out_msg = "Done with Upload: upload_dir=$upload_dir fname=$fname";
}
else {
$out_msg = "ERROR opening for upload: upload_dir=$upload_dir filename=$filename";
}
私はそれを確認しました
- アプリケーション内から実行する場合、while ループには入りません。
- 自分の HTML スクリプトから呼び出すと、while ループに入ります。
の値は$from_fh
両方の実行で同じです。以下のブロックで使用されるすべての値は、両方の実行でまったく同じです。