通过PHP将文件上载到mediawiki

通过PHP将文件上载到mediawiki,php,mediawiki,mediawiki-api,Php,Mediawiki,Mediawiki Api,我目前正在使用将文章从一个MediaWiki(1.16)安装(位于本地intranet中,无法从外部访问)复制到另一个安装。但是,Push只能通过让远程MediaWiki下载文件来复制文件,这在这种情况下是不可能的(intranet wiki由于某种原因无法从外部访问) 因此,我需要一些方法直接绑定到MediaWiki的上传API。我目前的尝试如下: $header = 'Content-Type: multipart/form-data; boundary='.$multipart_bound

我目前正在使用将文章从一个MediaWiki(1.16)安装(位于本地intranet中,无法从外部访问)复制到另一个安装。但是,Push只能通过让远程MediaWiki下载文件来复制文件,这在这种情况下是不可能的(intranet wiki由于某种原因无法从外部访问)

因此,我需要一些方法直接绑定到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函数,这样我就可以在其中添加一些调试日志了?

我还没有尝试过这一点,但是如果你在远程Wiki上创建页面(你知道其URL)然后,它看起来好像描述了这样做的方法,其中说您需要获取一个编辑令牌,然后使用该令牌、页面内容等进行发布。您将获得XML格式的消息以跟踪成功或失败。

好的,原始作者更新了扩展名。这就解决了问题