繁体   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