如何使用Laravel 5.5和Intervention Image将图像文件从Amazon S3上传到Stripe

时间:2018-02-23 18:54:04

标签: php laravel laravel-5 stripe-connect intervention

Laravel 5.5 app。我需要从Amazon S3(已经工作)检索驱动程序许可证的图像,然后使用他们的api将其上传到Stripe进行身份验证(不工作)。

Stripe's documents举个例子:

\Stripe\Stripe::setApiKey(PLATFORM_SECRET_KEY);
\Stripe\FileUpload::create(
    array(
        "purpose" => "identity_document",
        "file" => fopen('/path/to/a/file.jpg', 'r')
    ),
    array("stripe_account" => CONNECTED_STRIPE_ACCOUNT_ID)
);

但是,我没有使用fopen()检索我的文件。 当我从Amazon S3(使用我自己的自定义方法)检索我的图像时,我最终得到了Intervention\Image的实例 - 基本上是Image::make($imageFromS3) - 而且我不知道如何转换这相当于对fopen('/path/to/a/file.jpg', 'r')的调用。我尝试过以下方法:

$image->stream()

$image->stream()->__toString()

$image->stream('data-url')

$image->stream('data-url')->__toString()

我还试过跳过干预图像,只是使用Laravel的存储检索,例如:

$image = Storage::disk('s3')->get('path/to/file.jpg');

所有这些方法都会导致从Stripe获得Invalid hash异常。

从S3获取文件并将其转换为等同于fopen()调用的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

如果S3上的文件是公开的,您只需将URL传递给Stripe:

即可
objExcel.application.quit
Set objFileName = Nothing
Set objExcel = Nothing

请注意,这需要在\Stripe\FileUpload::create( array( "purpose" => "identity_document", "file" => fopen(Storage::disk('s3')->url($file)), ), array("stripe_account" => CONNECTED_STRIPE_ACCOUNT_ID) ); 文件中启用allow_url_fopen

如果没有,那么您可以先从S3获取文件,将其写入临时文件,然后使用Stripe文档所说的php.ini方法:

fopen()

有关详细信息,请参阅https://secure.php.net/manual/en/function.tmpfile.php