0

我正在尝试将图像上传到我的 S3 存储桶。我正在使用“Aws\Laravel\AwsServiceProvider”并收到此错误:

Guzzle \ Common \ Exception \ InvalidArgumentException
Unknown type passed to configuration loader: integer

我正在关注文档。这是 aws.php 文件的内容:

return array(
  'key'    => '1AW0WZEW23...',
  'secret' => 'SSz0H69JEAselT...',
  'region' => Aws\Common\Enum\Region::US_WEST_2,
);

我在我的控制器中添加了这个:

$path = public_path('public') . '/uploads/profile_pics/';
$ext = Input::file('profile_pic')->getClientOriginalName();
$fn = $randfile . '_' . $ext;

$s3 = App::make('aws')->get('s3');
$s3->putObject(array(
  'Bucket'     => 'nestr_profile_pics',
  'Key'        => $fn,
  'SourceFile' => $path,
));
4

2 回答 2

2

我猜您收到此错误 b/c 您的 aws.php 配置文件不是以 php 脚本标签开头

<?php
return array(
'key'    => '1AW0WZEW23...',
'secret' => 'SSz0H69JEAselT...',
'region' => Aws\Common\Enum\Region::US_WEST_2,
); 

因此配置数组没有被传递到 Guzzle。

于 2013-06-06T14:10:14.107 回答
0

这是 Laravel 的 CDN 资产管理器包,默认支持 Amazon S3。

https://github.com/Vinelab/cdn

通过 Composer 安装它:

    {
    "require": {
        "vinelab/cdn": "*"
    }

添加您的 CDN 凭据:

        'credentials' => [
            'key'    => '',
            'secret'    => '',
        ],

        'buckets' => [
            'bucket-name-here' => '*',
        ]

指定要上传的目录、扩展名、文件和模式

'include'    => [
    'directories'   => ['public/dist'],
    'extensions'    => ['.js', '.css', '.yxz'],
    'patterns'      => ['**/*.coffee'],
],

还要指定要忽略的内容

'exclude'    => [
    'directories'   => ['public/uploads'],
    'files'         => [''],
    'extensions'    => ['.TODO', '.txt'],
    'patterns'      => ['src/*', '.idea/*'],
    'hidden'        => true, // ignore hidden files
],

用法:

  1. 运行此 artisan 命令将您的资产推送到 CDN。

    php工匠cdn:推送

  2. 在您的视图或代码中的其他任何地方使用它:

    {{ Cdn::asset('public/assets/js/script.js') }}

    {{ Cdn::asset('public/assets/css/main.css') }}

于 2014-09-10T06:18:29.103 回答