【发布时间】:2019-06-10 12:26:21
【问题描述】:
我正在尝试获取图像的 URL,下载它,然后使用 Wordpress API 将其上传到 wordpress。这是我的代码:
def upload_media(self, media_url):
# Get the last path component
filename = media_url.split('/')[-1]
response = requests.get(media_url)
if response.status_code == 200:
image = Image.open(BytesIO(response.content))
upload_url = self.__upload_media_url()
headers = { "Content-Disposition": f'attachment; filename={filename}'}
files = { 'file': image.tobytes() }
request = requests.post(upload_url, auth=(self.username, self.password), files=files, headers=headers)
return request
每次失败时都会出现以下错误:
{'code': 'rest_upload_unknown_error', 'message': 'Sorry, this file type is not permitted for security reasons.', 'data': {'status': 500}}
最初我有以下代码,它在我的本地机器上工作。但是,因为我想在 Google Cloud Functions 上运行它,所以我无权访问文件系统。因此打开/关闭的过程将不起作用。
def upload_media(self, media_url):
# Get the last path component
filename = media_url.split('/')[-1]
response = requests.get(media_url)
if response.status_code == 200:
with open(filename, 'wb') as file:
file.write(response.content)
upload_url = self.__upload_media_url()
headers = { "Content-Disposition": f'attachment; filename={filename}'}
files = { 'file': open(filename, 'rb')}
request = requests.post(upload_url, auth=(self.username, self.password), files=files, headers=headers)
os.remove(filename)
return request
有没有办法做到这一点?
【问题讨论】:
-
您要上传的图片类型到底是什么 - PNG? JPG?别的东西?反正这不是Python的问题,需要配置Wordpress实例允许上传这种类型的文件,见wpforms.com/docs/how-to-allow-additional-file-upload-types
-
它们是默认已支持的 png/jpg 图像。如果我下载文件并将其保存到磁盘然后使用打开,一切正常。有没有办法在不实际保存文件的情况下模拟同样的事情?
标签: python wordpress google-cloud-functions wordpress-rest-api