为什么我使用 Perl 的 LWP 下载图像时会得到错误大小的文件?

发布于 2024-07-21 07:58:12 字数 289 浏览 8 评论 0原文

我正在尝试使用 Perl 从 HTTP 服务器获取图像。

我有该文件的完整 URL,并且正在尝试使用

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
print FH $data;
close (FH);

Now,从逻辑上讲,至少对我来说,这应该可行。 但这些文件的大小略有不同,我不明白为什么。

帮助!

I am trying to get an image from an HTTP server using Perl.

I have the full URL of the file and am attempting to use

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
print FH $data;
close (FH);

Now, logically, to me at least, this should work. But the files are slightly different sizes, and I can't work out why.

Help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

坏尐絯℡ 2024-07-28 07:58:12

您需要使用 binmode 将图像数据正确写入磁盘。

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
binmode (FH);
print FH $data;
close (FH);

否则它会被解释为文本,并且换行符会被破坏。

You need to use binmode to properly write the image data to disk.

my $data = LWP::Simple::get $params{URL};
my $filename = "image.jpg";
open (FH, ">$filename");
binmode (FH);
print FH $data;
close (FH);

Otherwise it is interpreted as text, and the newlines get munged.

旧人哭 2024-07-28 07:58:12

戴夫是对的,您应该/必须将文件句柄设置为二进制模式。 但你可以一次性完成所有这些:

LWP::Simple::getstore( $params{URL}, 'image.jpg' );

Dave is right, you should/must set your file handle to binary mode. But you could do all that in one go:

LWP::Simple::getstore( $params{URL}, 'image.jpg' );
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文