API:Import/ja

トークン
ページを取り込むには、取り込みトークン (import token) が必要です. このトークンは編集トークンと同じで、すべてのページに対して同じトークンを使用できますが、ログインのたびに変化します. Import tokens can be obtained via action=query&meta=tokens, or by using the following method:

ページの取り込み
action=import でページを取り込めます. 取り込みには、XML ファイルのアップロード、または別のページの指定、を使用できます (後者はウィキ間転送 (transwiki) とも呼ばれます).

パラメーター
(アップロード) の印があるパラメーターは、XML ファイルのアップロードによる取り込みのみに使用します. 同様に、(インターウィキ) の印があるパラメーターは、別のウィキからの取り込み (ウィキ間転送) のみに使用します.
 * : 取り込み記録用の要約 (省略可能)
 * : アップロードする XML ファイル (アップロード)
 * : 取り込み元のウィキ (インターウィキ)
 * The possible values for this parameter differ per wiki, see $wgImportSources. If the list of possible values for this parameter is empty, interwiki imports are disabled
 * : 取り込み先ページのページ名 (インターウィキ)
 * : 設定した場合、現在の版のみではなく、完全な履歴を取り込む (インターウィキ)
 * : 参照読み込みされたテンプレートもすべて取り込む (インターウィキ)
 * : 取り込み先の名前空間. 設定しなかった場合、ページの名前空間を変更しません (インターウィキ)
 * : 以前のリクエストで取得したトークン. 必ず末尾の  を   に urlencode するようにしてください
 * : 以前のリクエストで取得したトークン. 必ず末尾の  を   に urlencode するようにしてください
 * : 以前のリクエストで取得したトークン. 必ず末尾の  を   に urlencode するようにしてください

例
注記: In these examples, all parameters are passed in a GET request just for the sake of simplicity. However, action=import requires POST requests; GET requests will cause an error.

XML ファイル
When uploading a file, you need to use  as Content-Type or enctype,   will not work. The parameter xml is not a file name, but the actual content of a file.

Ruby source code example using httpclient (assumes login cookies are already in @headers)

FormData
If the result says "no file" it is expecting a file in a POST body. You can easily POST using FormData.

To quote from /api.php xml     - Uploaded XML file Must be posted as a file upload using multipart/form-data

JavaScript example
For simplicity, the following code is reading the XML from a textarea and makes use of MediaWiki's JavaScript includes:

This is just a minimal implementation. Do not forget error-handling. If you have the exports as files for upload and want to make it working in older browsers not sufficiently supporting Blobs and FormData, just build a HTML form. The form's target could be an iframe so you can read the response from it without exposing the blank API result page to your users.

Raw request resulting
The request that is composed by the client and sent to the server for reference. Note the file's in a POST body.

POST http://localhost/api.php HTTP/1.1 Host: localhost User-Agent: Accept-Language: de,en-US;q=0.7,en;q=0.3 Accept-Encoding: gzip, deflate Referer: http://localhost/index.php?title=Special:Export&action=submit Content-Length: 3231 Content-Type: multipart/form-data; boundary=-768648126486 Cookie: ; mwdbUserID=1; mwdbUserName=Rillke Connection: keep-alive Pragma: no-cache Cache-Control: no-cache

---768648126486 Content-Disposition: form-data; name="format"

json ---768648126486 Content-Disposition: form-data; name="action"

import ---768648126486 Content-Disposition: form-data; name="xml"; filename="file.xml" Content-Type: text/xml

 Sample Wiki

---768648126486 Content-Disposition: form-data; name="token"

XX39e9fd22a9de7675c71eadcfd2XXXX+\ ---768648126486--

This is because you sent it url-encoded but claimed it would be multipart/form-data? MediaWiki is looking for a boundary in the header but cannot find it.
 * "Missing boundary in multipart/form-data POST data" error?

起こりうるエラー
All errors are formatted as:

関連項目

 * ページの書き出し