通过laravel将视频上传到s3

时间:2018-01-16 05:03:27

标签: php laravel amazon-s3 file-upload

我正在开展涉及将视频上传到s3的laravel项目,但是当我尝试上传文件时,它始终会运行"上传x%"在左下角,然后在达到100%后进入404页面(并且没有文件上传到s3)。

当前代码:

$fileName = time().'.'.$request->file->getClientOriginalExtension();
    $file = $request->file('file');
    Storage::disk('s3')->put($fileName, fopen($file, 'r+'));
    $fileName = Storage::disk('s3')->url($fileName);


    return back()
        ->with('success','Image Uploaded successfully.')
        ->with('path',$fileName);}

我也尝试过使用相同结果的常规,非流式上传。这不是上传视频的正确方法吗?

1 个答案:

答案 0 :(得分:0)

如果您尝试上传大视频文件,PHP可能会耗尽内存。

尝试在流中上传:

$disk = Storage::disk('s3');
$disk->put($targetFile, fopen($sourceFile, 'r+'));

您还可以使用流将文件从S3下载到本地文件系统:

$disk = Storage::disk('s3');
$stream = $disk->getDriver()
               ->readStream($sourceFileOnS3);
file_put_contents($targetFile, stream_get_contents($stream), FILE_APPEND);