0

perl ファイル アップロード スクリプトの単体テストを作成しようとしています。私はまだ perl にかなり慣れていないので、コードから期待する結果を達成するのにいくつか問題があります。

基本的には、アップロードされたファイルを使用するのではなく、システム上に既にあるファイルを取得するようにスクリプトに指示するリクエストと共に test_only 属性を渡すことができると考えています。

テスト ファイルを作成し、output/tmp ディレクトリに配置しました。そのパーミッションを 775 に設定したことを確認しました。「私はテスト ファイルです」という単純な .txt ファイルです。

現在、テスト スクリプトを実行すると、ファイルの内容がエラー ログに出力され、バッファへの参照が表示されるはずです (ファイルが適切に開かれていることを確認できます)。ただし、これは発生しておらず、エラー ログには何も記録されていません。ファイルが正しく開いているかどうか疑問に思っていますか?

perl がファイルを開く方法について、何か基本的なことが抜けているだけだと思います。どんな助けでも大歓迎です。ありがとう :)

これは私のコードの適切なスニペットです:

my $test_only = 1;
my $tmp_uploads_path = "/home/my_instance/output/tmp/";
if($test_only)
{
    #put simulated file handle and file name here
    $file = "";
    $file_name = "test_file.txt";
}
else
{

    $file = $q->upload('file') 
        || die "No file data sent\n $!";

    $file_name = $q->param('file_name') 
        || die "No file_name sent\n $!";
}

########
#SAVE THE UPLOAD
########
my $bufsize = 1024;    
my $buffer = '';

open(my $TMPFILE, ">".$tmp_uploads_path.$file_name);
binmode $TMPFILE;
print STDERR "=> ".Dumper($TMPFILE)."\n";
while(read ($TMPFILE, $buffer, $bufsize)){
    print STDERR "=> ".Dumper($TMPFILE)."\n";
    print STDERR "=> ".Dumper($buffer)."\n";
    print $TMPFILE $buffer;    
}
close($TMPFILE);
4

1 に答える 1