javascript Strapi-让AWS S3成为我的文件上传提供商有问题

chhqkbe1  于 2023-04-10  发布在  Java
关注(0)|答案(6)|浏览(174)

我是按照Strapi网站上的说明来的:https://strapi.io/documentation/v3.x/plugins/upload.html#using-a-provider
下面是我的plugin.js文件,位于./config/plugins.js

module.exports = ({ env }) => ({
    upload: {
      provider: 'aws-s3',
      providerOptions: {
        accessKeyId: 'id',
        secretAccessKey: 'secret',
        region: 'us-east-1',
        params: {
          Bucket: 'bucket',
        },
      },
    }
  });

我已经安装了strapi-provider-upload-aws-s3:

"dependencies": {
    "knex": "<0.20.0",
    "pg": "^8.3.2",
    "sqlite3": "^5.0.0",
    "strapi": "3.1.4",
    "strapi-admin": "3.1.4",
    "strapi-connector-bookshelf": "3.1.4",
    "strapi-plugin-content-manager": "3.1.4",
    "strapi-plugin-content-type-builder": "3.1.4",
    "strapi-plugin-email": "3.1.4",
    "strapi-plugin-upload": "3.1.4",
    "strapi-plugin-users-permissions": "3.1.4",
    "strapi-provider-upload-aws-s3": "^3.1.4",
    "strapi-utils": "3.1.4"
  },

但是,当我去我的管理页面在我的本地,然后去插件,我没有看到一个齿轮在媒体库插件,这将允许我改变设置。
我被困在这里了,请帮帮忙。谢谢!

roejwanj

roejwanj1#

对于Strapi V3
Strapi上传插件文档出错。www.example.comhttps://docs.strapi.io/developer-docs/latest/plugins/upload.html#enabling-the-provider
通过他们的文档配置代码,我没有功能S3上传;它总是在本地上传。
现在我的工作S3提供程序配置如下所示。看起来不需要了。
这样,我就可以通过Strapi Jmeter 板(插件/媒体库)上传媒体文件,这些文件将出现在我的S3中。另一个指标是它的工作时间比本地上传更长。上传api列表路由工作,并显示我的文件网址作为完整的S3网址。

    • config/plugins. js**
upload: {
    provider: 'aws-s3',
    providerOptions: {
        accessKeyId: env('AWS_ACCESS_KEY_ID'),
        secretAccessKey: env('AWS_ACCESS_SECRET'),
        region:  env('AWS_REGION'),
        params: {
            Bucket: env('AWS_BUCKET')
        }
    }
}
bnlyeluc

bnlyeluc2#

对于AWS,使用以下代码更新~/extensions/upload/config/settings.json文件以使其工作:

{  
    "provider": "aws-s3",  
    "providerOptions": {
      "accessKeyId": "keyId",
      "secretAccessKey": "key",
      "region": "region",
      "params": {
        "Bucket": "bucket"
      }
   }
}
icnyk63a

icnyk63a3#

我做了这些修改,这是使用env变量而不是硬编码值的最佳方法:编辑文件config/plugin.js:

module.exports = ({ env }) => ({
upload: {
  provider: 'aws-s3'
  },
});

创建一个文件扩展名/upload/config/settings.js:

module.exports = {
provider: 'aws-s3',
providerOptions: {
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_ACCESS_SECRET,
  region: process.env.AWS_REGION,
  params: {
    Bucket: process.env.AWS_BUCKET_NAME,
  },
},
};
mzsu5hc0

mzsu5hc04#

在路径~/extensions/upload/config/settings. json中粘贴以下代码对我来说很有效:

{  
    "provider": "cloudinary",  
    "providerOptions": {
      "cloud_name": "Cloud Name",
      "api_key": "API Key",
      "api_secret": "Secret Key"  
   }
}

我仍然没有看到媒体库旁边的齿轮,但当我上传图片,我看到它在我的cloudinary帐户.我真的希望他们尽快更新他们的文档.这给了我很多麻烦,我已经看到了一些其他人与这个问题以及.

knsnq2tg

knsnq2tg5#

您不应在Strapi管理上更改有关媒体库的第三方提供程序的任何设置。请使用plugins.js文件配置提供程序。
在那里进行配置(从AWS复制您的accessKeyIdsecretAccessKey等),然后从该点进行的任何上传都应上传到AWS上指定的S3存储桶。

***旁注:*直接在代码中存储像secretAccessKey这样的私钥并不是一个好主意,请确保使用环境变量。

n9vozmp4

n9vozmp46#

只要确保在你的.config/plugins.js上有以下结构就可以了。在你的例子中,你在upload中没有config对象。

./config/plugins.js

module.exports = ({ env }) => ({
  // ...
  upload: {
    config: {
      provider: 'aws-s3',
      providerOptions: {
        accessKeyId: env('AWS_ACCESS_KEY_ID'),
        secretAccessKey: env('AWS_ACCESS_SECRET'),
        region: env('AWS_REGION'),
        params: {
          Bucket: env('AWS_BUCKET'),
        },
      }
    },
  },
  // ...
});

我希望这对某人有帮助,我也有同样的问题,只是上传中缺少了配置。
干杯!

相关问题