Laravel 5.4:文件上传到aws s3直接进入存储桶

时间:2017-03-24 07:57:24

标签: php amazon-web-services amazon-s3 laravel-5.2

我正在尝试将文件上传到AWS s3存储桶

public function fileTest(Request $request)
  {

      //this will create folder test inside my bucket and put the contents
      $request->file->store('test','s3');
  }

但是上面的代码会在我的存储桶中创建一个名为test的文件夹并将文件放入其中。

但我想直接上传到存储桶

$request->file->store('s3');

我已经尝试了上面的代码但是没有用。

4 个答案:

答案 0 :(得分:2)

public function uploadFile (Request $request) {
    $file = $request->file('file');

    $imageName = 'uploads/' . $file->getClientOriginalName();

    Storage::disk('s3')->put($imageName, file_get_contents($file));
    Storage::disk('s3')->setVisibility($imageName, 'public');

    $url = Storage::disk('s3')->url($imageName);

    return Response::json(['success' => true, 'response' => $url]);
}

答案 1 :(得分:1)

通过以下

解决了我的问题
  $s3 = Storage::disk('s3');
  $s3->put('',$request->file);

<强>速记

Storage::disk('s3')->put('',$request->file)

答案 2 :(得分:0)

  

将文件放在s3服务器上

    $agreement_contract_copy = $request->file('agreement_contract');
    $filename = $id. '/agreement' . '_' . time() . '.pdf';
    $student->agreement_copy = $filename;
    $student->save();
    Storage::disk('s3')->put($filename, file_get_contents($agreement_copy));
  

如果不能将其定义为public,则默认将其存储为private,并且当您使用private方法时,在文件获取时间中,请使用temp方法,如下所示。   获取文件

Storage::disk('s3')->temporaryUrl
    ($student->agreement_copy, \Carbon\Carbon::now()->addMinutes(5))

$ student-> agreement_copy

  

经过测试

答案 3 :(得分:0)

在很短的解决方案中。

Storage::disk('s3')->put("destination_path", file_get_contents("BinaryResourse"));