使用laravel文件系统将完整目录从app root上传到S3?

时间:2016-05-16 18:53:16

标签: php laravel amazon-s3 laravel-5.2

可以使用Laravel文件系统执行以下代码段吗?

        try {
            $s3 = AWS::createClient( 's3' );
            $s3->uploadDirectory( env('AMAZON_LOCATION'), env('AMAZON_BUCKET'), $this->key_prefix, [
                'params'      => [ 'ACL' => 'public-read'],
                'concurrency' => 20,
                'debug'       => true
            ] );
        }catch (S3Exception $e){

        }

我只是不想使用更多的包,但我无法使用laravel文件系统复制相同的功能,有没有人以前做过或有一个很好的指针如何做到这一点?

1 个答案:

答案 0 :(得分:0)

我唯一可能提出的解决方案如下:

            $files = File::files('/directory/path') );
            if ( sizeof( $files ) > 0 ) {
                $disk = Storage::disk( 'api_s3' );
                foreach ( $files as $file ) {
                    $path_info = pathinfo( $file );
                    $file_name = $path_info[ 'filename' ] . '.' . $path_info[ 'extension' ];
                    $disk->put( $file_name, file_get_contents( $file ) );
                }
            }

不是最好的解决方案,但确实有效。