老实说,我现在有点迷失了,我正在尝试使用以下方法将图像上传到 Python 中的 WordPress:
media_endpoint = 'https://wpurl/wp-json/wp/v2/media?custom_dir=news'
headers = {
'Content-Type': 'image/jpeg',
'Content-Disposition': f'attachment; filename={image_name}'
}
response = requests.post(
media_endpoint,
headers=headers,
data=image_data,
auth=auth
)
我反复收到此错误
{"code":"rest_upload_sideload_error","message":"上传的文件无法移动到 wp-content/uploads/2023/10。","data":{"status":500}}
我看到一些解决了创建新文件夹/让在 API 调用中创建文件夹的问题,但我仍然收到此错误:
{"code":"rest_upload_sideload_error","message":"上传的文件无法移动到wp-content/uploads/news。","data":{"status":500}}
(文件夹确实存在于服务器上的给定路径上,并且过滤器功能似乎按预期工作
add_filter('upload_dir', 'custom_upload_dir');
function custom_upload_dir($directory) {
if (isset($_REQUEST['custom_dir']) && !empty($_REQUEST['custom_dir'])) {
$custom_dir = '/' . sanitize_file_name($_REQUEST['custom_dir']);
$directory['path'] = str_replace($directory['subdir'], $custom_dir, $directory['path']);
$directory['url'] = str_replace($directory['subdir'], $custom_dir, $directory['url']);
$directory['subdir'] = $custom_dir;
}
return $directory;
}
现在我检查了文件权限,并使用设置它们
sudo chown -R ploi:ploi uploads
我已经检查过,所有文件夹都有这些权限,也设置为755等等,也尝试了
sudo usermod -a -G www-data ploi
和sudo chown -R ploi:www-data uploads
也仍然是同样的错误
我的 wp debug.log 或 nginx error.log 中也没有与此相关的日志
我有什么遗漏的吗?通过API上传帖子没有问题,只是当涉及到媒体上传时我似乎无法让它工作
通过 WordPress Rest API 上传媒体会导致无法将上传的文件移动到 /uploads 错误。
就我而言,我在 Docker 容器中使用了 Wordpress,并且解决了无法上传图像的类似问题,如下所示:
docker compose exec -u 0 wordpress bash
# In your wordpress shell
cd wp-content/
ls -lah
chown www-data:www-data ./* -R
ls -lah
说明\
wordpress
进入 docker 容器(我的称为
-u 0
cd
进入wordpress内容文件夹,其中存储上传的数据ls -lah
检查您的权限 -> 如果此处未显示 www-data,则您应该处于正确的位置www-data