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()
调用的正确方法是什么?
答案 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。