【问题标题】:Strapi media library image url broken by Digital OceanStrapi 媒体库图像 url 被 Digital Ocean 破坏
【发布时间】:2022-06-20 22:20:15
【问题描述】:

我正在尝试将图像上传到 Digital Ocean Storage。它是在 DO 中上传的,但在回调后,strapi 生成了错误的 URL

例如:https://https//jobsflow/d0e989a489bdc380c55e5846076d07f8.png?updated_at=2022-06-08T17:00:32.934Z意思是https://https/ .

//jobsflow 是我的存储位置。

这是我的 config/plugins.js 代码

  module.exports = {
upload: {
  config: {
    provider: "strapi-provider-upload-dos",
    providerOptions: {
      key: process.env.DO_SPACE_ACCESS_KEY,
      secret: process.env.DO_SPACE_SECRET_KEY,
      endpoint: process.env.DO_SPACE_ENDPOINT,
      space: process.env.DO_SPACE_BUCKET,
      directory: process.env.DO_SPACE_DIRECTORY,
      cdn: process.env.DO_SPACE_CDN,
    },
  },
},

};

//这是我的配置/middleware.js

  module.exports = [
  "strapi::errors",
  {
    name: "strapi::security",
    config: {
      contentSecurityPolicy: {
        useDefaults: true,
        directives: {
          "connect-src": ["'self'", "https:"],
          "img-src": [
            "'self'",
            "data:",
            "blob:",
            "*.digitaloceanspaces.com"
          ],
          "media-src": ["'self'", "data:", "blob:"],
          upgradeInsecureRequests: null,
        },
      },
    },
  },
  "strapi::cors",
  "strapi::poweredBy",
  "strapi::logger",
  "strapi::query",
  "strapi::body",
  "strapi::favicon",
  "strapi::public",
];

请帮助我..!如果你有任何想法

【问题讨论】:

    标签: file-upload digital-ocean strapi


    【解决方案1】:

    您是否为此使用了自定义上传提供程序?

    为什么不用官方的@strapi/provider-upload-aws-s3插件呢?

    // path config/plugins.js
      ...
      upload: {
        config: {
          provider: 'aws-s3',
          providerOptions: {
            accessKeyId: env('DO_ACCESS_KEY_ID'),
            secretAccessKey: env('DO_ACCESS_SECRET'),
            region: env('DO_REGION'),
            endpoint: env('DO_ENDPOINT'),
            params: {
              Bucket: env('DO_BUCKET'),
            }
          },
        },
      },
    
    

    另一个更改图像 URL 并将其指向您的 CDN 的好技巧是添加以下内容:

    // src/index.js
    
    
    async bootstrap({strapi}){
    
          strapi.db.lifecycles.subscribe({
            models: ['plugin::upload.file'],
            // use cdn url instead of space origin
            async beforeCreate(data) {
              data.params.data.url = data.params.data.url.replace(__ORIGINAL_URL__, __CDN_URL__)
    
            // you can even do more here like setting policies for the object you're uploading
           
            },
          });
    
    
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-15
      • 1970-01-01
      • 2015-04-22
      • 2017-01-31
      • 2022-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多