Wordpress REST API 媒体上传:“上传的文件无法移动到 wp-content\/uploads\/”

问题描述 投票:0回答:1

老实说,我现在有点迷失了,我正在尝试使用以下方法将图像上传到 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 错误。

python wordpress wordpress-rest-api
1个回答
0
投票

就我而言,我在 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

说明\

  1. 以 root 用户身份使用
    wordpress
     进入 docker 容器(我的称为 
    -u 0
  2. )的 bash 终端
  3. cd
    进入wordpress内容文件夹,其中存储上传的数据
  4. 使用
    ls -lah
    检查您的权限 -> 如果此处未显示 www-data,则您应该处于正确的位置
  5. 递归地将用户和组所有权更改为
    www-data
  6. 再次检查您的权限以查看任何更改。
© www.soinside.com 2019 - 2024. All rights reserved.