【发布时间】:2012-06-02 05:17:15
【问题描述】:
我正在尝试使用 Mediawiki::API->upload 将图像上传到 mediawiki。为此,我正在使用以下代码:
use strict;
use MediaWiki::API;
use DateTime::Format::ISO8601;
use encoding 'utf8';
binmode STDERR, ":utf8";
use URI::Escape;
use warnings;
use MediaWiki::API;
my $url="http://localhost/mediawiki";
my $wiki_login="nguyenki";
my $wiki_passwd="linh";
my $wiki_domain="";
chomp($wiki_login);
chomp($wiki_passwd);
chomp($wiki_domain);
my $mediawiki;
mw_connect_maybe();
# configure the special upload location.
$mediawiki->{config}->{upload_url} = "$url/index.php/Special:Upload";
my $name="fl.png"; # Name of fichier to upload
# upload a file to MediaWiki
open (my $toi, $name) or die "can't open UTF-8 encoded filename: $!";
binmode $toi;
my ($buffer, $data);
while (my $n=read($toi, $buffer, 65536) ) {
$data .= $buffer;
print STDERR "$n bytes read\n";
}
close($toi);
$mediawiki->upload( { title => $name,
summary => 'This is the summary to go on the Image:file.jpg page',
data => $data } ) || die $mediawiki->{error}->{code} . ': ' . $mediawiki->{error}->{details};
#To login to the wiki page
sub mw_connect_maybe {
if ($mediawiki) {
return;
}
$mediawiki = MediaWiki::API->new;
$mediawiki->{config}->{api_url} = "$url/api.php";
if ($wiki_login) {
if (!$mediawiki->login({
lgname => $wiki_login,
lgpassword => $wiki_passwd,
lgdomain => $wiki_domain,
})) {
print STDERR "Failed to log in mediawiki user \"$wiki_login\" on $url\n";
print STDERR "(error " .
$mediawiki->{error}->{code} . ': ' .
$mediawiki->{error}->{details} . ")\n";
exit 1;
} else {
print STDERR "Logged in with user \"$wiki_login\".\n";
}
}
}
它产生了一个错误: HTTP::Message 内容必须是 /usr/share/perl5/HTTP/Request/Common.pm 第 91 行的字节 我不知道如何纠正它。 有什么建议吗?
谢谢。
【问题讨论】:
-
为我工作,展示你的整个代码。
-
你了解 git-remote-mediawiki 吗?我正在尝试通过 Mediawiki::API 上传文件。我没有展示的部分是创建 mediawiki 实例和 login 的部分。我可以只上传文本文件,但不能上传 .png 或 .jpg 或 .doc... perl 的版本有什么问题吗?
-
我对 git-remote-mediawiki 一无所知。我已经使用 MediaWiki::API 上传了一个文件。 Show your whole code 和你尝试上传的文件,否则不可能reproduce your problem。
-
现在我可以上传文本文件,但不能上传 .png 或 .jpg。它总是生成错误:使用用户“nguyenki”登录。 44906 字节读取 HTTP::Message 内容必须是 /usr/share/perl5/HTTP/Request/Common.pm 第 91 行的字节
-
对不起,我不能在这里上传文件“fl.png”,因为我只是这个论坛的新手。
标签: perl mediawiki mediawiki-api