Как загрузить изображение в цифровое пространство Ocean Spaces, используя AWS SDK для Yii2? - PullRequest
2 голосов
/ 30 марта 2020

Поскольку API Digital Ocean Spaces совместим с AWS SDK, как программно загрузить изображения в Digital Ocean Spaces, используя AWS SDK для Yii2?

Вот мои данные

Good, we have the following data: 
1. endpoint: fra1.digitaloceanspaces.com
2. bucket name: dev-abc
3. api key: xxxxxxxxxxxxx and api secret: xxxxxxx
4. The url that you need to use to deliver assets is https://dev-abc

Я пробовал с этим кодом, который не работает

$uploader = new FileUpload(FileUpload::S_S3, [
    'version' => 'latest',
    'region' => 'fra1',
    'endpoint' => 'https://fra1.digitaloceanspaces.com',
    'credentials' => [
        'key' => 'xxxxxxxxxxxxx ',
        'secret' => 'xxxxxxx'
    ],
    'bucket' => 'dev-abc'
]);

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы можете php код для загрузки изображения в цифровом океане:

  1. Сконфигурировать клиента:

    использовать Aws \ S3 \ S3Client;

    $client = new Aws\S3\S3Client([
        'version' => 'latest',
        'region'  => 'us-east-1',
        'endpoint' => 'https://nyc3.digitaloceanspaces.com',
        'credentials' => [
            'key'    => getenv('SPACES_KEY'),
            'secret' => getenv('SPACES_SECRET'),
        ],
    ]);
    
  2. Создать новое пространство

    $client->createBucket([
        'Bucket' => 'example-space-name',
    ]);
    
  3. Загрузить изображение

    $client->putObject([
        'Bucket' => 'example-space-name',
        'Key'    => 'file.ext',
        'Body'   => 'The contents of the file.',
        'ACL'    => 'private'
    ]);
    
1 голос
/ 06 мая 2020

Вот как я могу go это

Добавлены три библиотеки gulp, gulp-awspubli sh, gulp-rename

var gulp = require('gulp');
var awspublish = require('gulp-awspublish');
var rename = require('gulp-rename');

var publisherDev = awspublish.create({
  region: 'fra1',
  params: {
    Bucket: 'dev-static-abc-ro'
  },
  accessKeyId: 'XCCCCCZX',
  secretAccessKey: 'EDKDJKJDKDJ',
  endpoint: 'fra1.digitaloceanspaces.com'
});

Теперь добавил функцию // dev server

gulp.task('dev', function() {
  // console.log("Hi! I'm Gulp default task root!");
  return gulp
    .src('./temp-dist/**')
    .pipe(
      rename(function(path) {
        path.dirname += '/assets';
        // path.basename += "-s3";
      })
    )
    .pipe(publisherDev.publish())
    .pipe(publisherDev.sync('assets/'))
    .pipe(awspublish.reporter());
});

Запустите команду

gulp dev

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...