在 Strapi v4 中出错 Google 云存储路径

Getting wrong Google Cloud Storage path in Strapi v4

目前我正在上传一些文件。将文件上传到 Google Cloud Storage 时成功,但是在获取文件时,出现类似这样的错误

如果我查看详细信息,来源是错误的,例如正确的link应该是这样的https://storage.cloud.google.com/cms-strapi-storage/thumbnail_cloudsql_ae61374abd/thumbnail_cloudsql_ae61374abd.png

谁能帮帮我?谢谢

我的参考和包来自这个来源:https://www.npmjs.com/package/strapi-provider-upload-google-cloud-storage#setup-auth

问题已经解决!

解决这个问题的方法是

  1. 因为环境是生产模式,在 Strapi v4 中,您应该将所有文件创建到 config/env/production
  2. 创建文件plugins.js,像这样填写。
const fs = require('fs');
require('dotenv').config();

module.exports = ({ env }) => ({
  upload: {
    config: {
      provider: 'strapi-provider-upload-google-cloud-storage',
      providerOptions: {
        serviceAccount: JSON.parse(fs.readFileSync(process.env.GCS_SERVICE_ACCOUNT)),
        bucketName: env('GCS_BUCKET_NAME'),
        basePath: env('GCS_BASE_PATH'),
        baseUrl: env('GCS_BASE_URL'),
        publicFiles: true,
        uniform: false,
        gzip: true,
      },
    },
  },
});

关键是 publicFiles,因为如果值为 false,它不会在 Google Cloud Storage 中创建 public url,我们无法获取和查看图像

  1. 补充说明,不要忘记添加安全性以便获得 GCS(Google 云存储)的权限
module.exports = [
  'strapi::errors',
  {
    name: 'strapi::security',
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          'connect-src': ["'self'", 'https:'],
          'img-src': ["'self'", 'data:', 'blob:', 'storage.googleapis.com'],
          'media-src': ["'self'", 'data:', 'blob:', 'storage.googleapis.com'],
          upgradeInsecureRequests: null,
        },
      },
    },
  },
  'strapi::cors',
  'strapi::poweredBy',
  'strapi::logger',
  'strapi::query',
  'strapi::body',
  'strapi::favicon',
  'strapi::public',
];