簡體   English   中英

Apache24 Windows 服務器上上傳的文件已損壞

[英]Uploaded files on Apache24 Windows server are corrupted

我有一個 Perl CGI 腳本可以在我的本地 Windows 10 運行 Apache24 的機器上上傳文件。 上傳似乎工作正常,但我正在測試的 MP3 和 JPG 文件已損壞。

我還注意到上傳的文本文件中帶有額外的換行符,我認為這是某種線索。 文本文件是可讀的。

我的腳本基於Noah Petherbridge 的進度條腳本 如果我在外部服務器上運行它似乎可以正常工作,但不能在我的本地 Windows 服務器上運行。

我不知道我是否應該在這里發布整個腳本,但這是有意義的部分。

use CGI;
use CGI::Carp "fatalsToBrowser";
my $q = new CGI (\&hook);

 sub hook {
        my ($filename,$buffer,$bytes_read,$file) = @_;

    $filename = $q->param("incoming");
    $handle   = $q->upload("incoming");
   open (FILE, ">/Apache24/htdocs/uploads/$filename") or die "Can't create file: $!";
    
    while (read($handle,$buffer,2048)) {
            print FILE $buffer;
    }
    close (FILE);
}

我不知道這是否與我本地的 Apache 安裝有關,或者 perl 腳本正在插入一些東西。 任何想法將不勝感激。 謝謝你。

默認情況下,文件讀取和寫入在 LF 和 CR LF 行結尾之間轉換。 這對於不是文本文件的文件沒有意義。

代替

open (FILE, ">/Apache24/htdocs/uploads/$filename")
   or die "Can't create file: $!";

my $qfn = "/Apache24/htdocs/uploads/$filename";
open( my $fh, ">:raw", $qfn )
   or die( "Can't create file `$qfn`: $!" );

:raw是相關部分。更改的 rest 只是改進。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM