Загрузить изображение в выпуск amazonS3 Froala

В настоящее время я интегрирую froala в свой проект (который находится в angualarJs и laravel). Мне нужно загрузить изображение на amazonS3. Но у меня есть некоторые проблемы с пути amazoneS3. Вот мой код

с точки зрения,

<textarea id="froala-sample-2" ng-init="article.description = article.description || ''" ng-model="article.description"></textarea>

Я изменил fileUploadToS3 на true в file.min.js. (согласно документам.)

с в угловом контроллере

Data.get('{{url}}').then(function(data){
var dta         = angular.fromJson(data);
$scope.sign     = dta.sign;
$scope.policy   = dta.policy;
$scope.bucket   = dta.bucket;
$scope.region   = dta.region;
$scope.keystart = dta.keystart;
$scope.acl      = dta.acl;
$scope.accessKey= dta.key;

$('#froala-sample-2').froalaEditor({
enter: $.FroalaEditor.ENTER_P,
imageUploadToS3: {
bucket: $scope.bucket,
region: $scope.region,
keyStart: $scope.keystart,
params: {
acl: $scope.acl,
AWSAccessKeyId: $scope.accessKey,
policy: $scope.policy,
signature: $scope.sign,
}
}
})
.on('froala.image.uploadedToS3', function (e, editor, link, key, response) {
console.log ('S3 Link:', link);
console.log ('S3 Key:', key);
});}, function (error) {});

здесь я создаю подпись и политику

public function createSignature() {
// Set date timezone.
date_default_timezone_set('Europe/Bucharest');

$bucket     = '-bucket-';
$region     = '-region-';
$keyStart   = '-keystart-';
$acl        = '-acl-';$accessKeyId = $_SERVER['AWS_ACCESS_KEY'];
$secret      = $_SERVER['AWS_SECRET_ACCESS_KEY'];

$policy      = base64_encode(
json_encode(
array(

'expiration' => date('Y-m-d\TH:i:s.000\Z', strtotime('+1 day')),
'conditions' => array(
array('bucket' => $bucket),
array('acl' => $acl),
array('success_action_status' => '201'),
array('x-requested-with' => 'xhr'),
array('starts-with', '$key', $keyStart),
array('starts-with', '$Content-Type', '') // accept all files
) )));

$aData['policy']    = $policy;
$aData['sign']      = base64_encode(hash_hmac('sha1', $policy, $secret, true));
$aData['bucket']    = $bucket;
$aData['region']    = $region
$aData['keystart']  = $keyStart;
$aData['acl']       = $acl;
$aData['key']       = $accessKeyId;
return json_encode($aData);}

При загрузке изображения я получил следующую проблему:
ОПЦИИ https://undefined.amazonaws.com/undefined нетто :: ERR_NAME_NOT_RESOLVED.
Кто-нибудь, пожалуйста, скажите мне, как я могу решить эту проблему?
Заранее спасибо.

0

Решение

Удостоверься что imageUploadToS3 Объект заполнен правильно:

imageUploadToS3: {
bucket: $scope.bucket,
region: $scope.region,
keyStart: $scope.keystart,
params: {
acl: $scope.acl,
AWSAccessKeyId: $scope.accessKey,
policy: $scope.policy,
signature: $scope.sign,
}
}

От https://undefined.amazonaws.com/undefined ошибка, я предполагаю, что по крайней мере $scope.bucket а также $scope.region не определены.

Также вы можете проверить Froala PHP SDK ( https://github.com/froala/wysiwyg-editor-php-sdk ) и его документация ( https://www.froala.com/wysiwyg-editor/docs/sdks/php ) SDK выполнит загрузку файла Amazon S3 за вас.

Или вы можете вдохновить на создание подписи: https://github.com/froala/wysiwyg-editor-php-sdk/blob/master/lib/FroalaEditor/S3.php . А вот документация о том, как его использовать https://www.froala.com/wysiwyg-editor/docs/sdks/php/file-s3-upload .

Надеюсь, поможет.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]