Jabaa
Jabaa

Reputation: 1753

Laravel 5.4:file upload to into aws s3 directly to bucket

I am trying to upload a file to AWS s3 bucket

public function fileTest(Request $request)
  {

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

But the above code will create a folder named test inside my bucket and put the file into it.

But i want to directly upload to the bucket

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

I've tried above code but dosen't worked.

Upvotes: 1

Views: 8350

Answers (4)

pankaj
pankaj

Reputation: 1906

In a very short solution.

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

Upvotes: 0

Kaushik shrimali
Kaushik shrimali

Reputation: 1228

Put your file on s3 server

    $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));

If you can not define as public so default its store as private and when you use private method so in file geting time used temp method as below. Get your file

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

$student->agreement_copy

Tested

Upvotes: 3

Hemant Sah
Hemant Sah

Reputation: 41

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]);
}

Upvotes: 3

Jabaa
Jabaa

Reputation: 1753

Solved my issue with following

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

Shorthand

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

Upvotes: 2

Related Questions