我目前使用Extension:Push從一個MediaWiki(1.16)安裝(位於本地內部網中,不能從外部訪問)將文章複製到另一個。但是,Push只能通過讓遠程MediaWiki下載文件來複制文件,在這種情況下這是不可能的(因爲某種原因,Intranet wiki無法從外部訪問)。通過PHP將文件上傳到mediawiki
所以,我需要一些方法直接綁定到MediaWiki的上傳API。我現在的嘗試是:
$header = 'Content-Type: multipart/form-data; boundary='.$multipart_boundary.'\r\n'.
'Cookie: '.$cookies;
$file_contents = file_get_contents ($imagePage->getDisplayedFile()->getFullUrl());
$content = "--".$multipart_boundary.'\r\n'.
'Content-Disposition: form-data; name="file"; filename="'.basename($imagePage->getDisplayedFile()->getFullUrl()).'"\r\n'.
'Content-Type: application/octet-stream\r\n\r\n'.
$file_contents.'\r\n'.
'--'.$multipart_boundary.'\r\n'.
'Content-Disposition: form-data; name="action"\r\n\r\n'.
'upload\r\n'.
'--'.$multipart_boundary.'\r\n'.
'Content-Disposition: form-data; name="format"\r\n\r\n'.
'json\r\n'.
'--'.$multipart_boundary.'\r\n'.
'Content-Disposition: form-data; name="ignorewarnings"\r\n\r\n'.
'1\r\n'.
'--'.$multipart_boundary.'\r\n'.
'Content-Disposition: form-data; name="token"\r\n\r\n'.
$token.'\r\n';
$context = stream_context_create (array (
'http' => array (
'method' => 'POST',
'header' => $header,
'content' => $content,
),
));
$response = file_get_contents ($target, false, $context);
我沒有得到任何錯誤信息(既不是來自本地還是遠程的Apache),但文件沒有出現,無論是。任何人都知道什麼是錯誤的,有一個工作解決方案,或者至少可以將我指向涉及的mediawiki函數,以便我可以在其中添加一些調試日誌記錄?