Perl 如何使用CGI应用程序上载文件

Perl 如何使用CGI应用程序上载文件,perl,file-upload,cgi-application,Perl,File Upload,Cgi Application,嗨 我正在尝试使用perl cgi应用程序上载图像文件。不确定我做错了什么-但是保存了一个空的图像文件(名称正确) 我的$picture=$self->query->param('picture') 我的$buffer; 我的$bytesread 打开(输出文件“>>$user\u dir/profile\u picture/$picture”) 而($bytesread=read($picture,$buffer,1024)){ 打印输出文件$buffer; }阅读文档的“创建文件上载字

嗨 我正在尝试使用perl cgi应用程序上载图像文件。不确定我做错了什么-但是保存了一个空的图像文件(名称正确)


我的$picture=$self->query->param('picture')
我的$buffer; 我的$bytesread

打开(输出文件“>>$user\u dir/profile\u picture/$picture”)
而($bytesread=read($picture,$buffer,1024)){
打印输出文件$buffer;
}

阅读文档的“创建文件上载字段”部分。在这里,您将看到upload方法将返回一个filehandle

    my $fh = $self->query->upload('picture');

    my $buffer; my $bytesread;
    while ($bytesread = read($fh, $buffer, 1024)) {
      ...
     }

不要忘记HTML表单元素还需要指定enctype='multipart/mixed',否则上传文件流不会被发送。

我看到,上传方法只适用于普通的旧CGI,而不适用于CGI::applicationSince
query()
返回一个普通的旧
CGI
对象,它应该工作得很好。这是我所期望的——但它没有。其他人则在论坛上抱怨。这可能是cgi::application中的错误。请放心,cgi::application中没有影响文件上载的错误。我一直在用它。代码或HTML/Javascript中存在错误。也许是水蟾蜍说的,我找到了。这就是我所缺少的-binmode OUTFILE;-它处理非文本格式