【问题标题】:Uploading of image to WordPress through Python's requests通过 Python 的请求将图像上传到 WordPress
【发布时间】:2018-02-22 11:59:54
【问题描述】:

为了验证 WordPress 实例的安装,我们正在编写 Python 单元测试。其中一项测试应执行以下操作:将图像上传到 WordPress。

为了做到这一点,我正在使用 Requests 库。

当我通过 Firebug 检查 /wp-admin/media-new.php 页面中的表单时(表单信息,我得到以下信息): 形式 id:文件格式 姓名 方法:邮寄 行动:http://localhost:8000/wp-admin/media-new.php

元素 id: plupload-browse-button 类型:按钮 值:选择文件

id:异步上传 名称:异步上传 类型:文件 标签:上传

id:html-上传 名称:html-上传 类型:提交 值:上传

id: post_id 名称:post_id 类型:隐藏 值:0

id:_wpnonce 名称:_wpnonce 类型:隐藏 值:c0fc3b80bb

id: 文件格式 名称:_wp_http_referer 类型:隐藏 值:/wp-admin/media-new.php

我相信 _wpnonce 是为每个会话生成的唯一值。因此,在尝试上传文件之前,我获取了 media-new.php 页面并获取了表单中的 _wpnonce(因此是我代码中的变量)。

我的代码如下:

    with open('1.jpg', 'rb') as f:
        upload_data = {'post_id': '0',
                       '_wp_http_referer': '/wp-admin/media-new.php',
                       '_wpnonce': wp_nonce,
                       'action': 'upload_attachement',
                       'name': '1.jpg',
                       'async-upload': f,
                       'html-upload': 'Upload'}
        upload_result = session.post('http://localhost:8000/wp-admin/media-new.php', upload_data)

代码运行良好,upload_result.status_code 等于 200。

但是,图像从未出现在 WordPress 的媒体库中。

我相信这是一个简单的错误,但我无法弄清楚我错过了什么。

提前感谢您的帮助。

【问题讨论】:

  • 我认为link 会对您有所帮助。检查上传文件夹权限。

标签: wordpress python-3.x python-requests


【解决方案1】:

如果你想发布文件,你应该使用files 参数。此外,'_wpnonce' 值不足以获得身份验证,您需要拥有 cookie。

url = 'http://localhost:8000/wp-admin/media-new.php'
data = {
    'post_id': '0',
    '_wp_http_referer': '/wp-admin/media-new.php',
    '_wpnonce': wp_nonce,
    'action': 'upload_attachement',
    'html-upload': 'Upload'
}
files = {'async-upload':('1.jpg', open('1.jpg', 'rb'))}
headers = {'Cookie': my_cookies}
upload_result = session.post(url, data=data, files=files, headers=headers)

我假设您已从浏览器获取有效的 cookie。如果您想通过requests 进行身份验证,请查看我对这篇文章的回答:login-wordpress-with-requests

【讨论】:

  • 谢谢,它确实有效。但是,我不需要饼干。我相信我不需要它们,因为我还在同一个会话中。
  • 是的,如果您有经过身份验证的会话,则无需担心 cookie。
猜你喜欢
  • 2021-01-20
  • 1970-01-01
  • 2021-06-18
  • 1970-01-01
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 2023-03-26
相关资源
最近更新 更多