2017-02-21 15 views
0

現在私は、私のプロジェクト(angualarJsとlaravelにある)にfroalaを統合しています。 amazonS3に画像をアップロードする必要があります。しかし、私はamazoneS3のパスにいくつかの問題があります。ここに私のコードです。amazonS3号に画像をアップロードするFroala

ビューのある、

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

Iは、角度コントローラここで

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) {}); 

中で

as per the docs.)file.min.js. trueにfileUploadToS3を変更IAM署名とポリシーを作成する

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 net :: ERR_NAME_NOT_RESOLVED 誰か教えてください。どうすればこの問題を解決できますか? ありがとうございます。

答えて

1

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://www.froala.com/wysiwyg-editor/docs/sdks/php/file-s3-upload

希望します。

関連する問題