hendraspt
hendraspt

Reputation: 969

Upload pdf file using Laravel 5

I'm using Laravel 5.2 and I want to make a form which can upload a pdf file with it. I want to add that file on folder "files" in "public" folder.

here is my view:

<div class="form-group">
     <label for="upload_file" class="control-label col-sm-3">Upload File</label>
     <div class="col-sm-9">
          <input class="form-control" type="file" name="upload_file" id="upload_file">
     </div>
</div>

and what should I do next? what should I add in my controller and route?

Upvotes: 7

Views: 57067

Answers (6)

rashedcs
rashedcs

Reputation: 3725

  public function store(Request $request)
  {
        if($request->file('file')) 
        {
            $file = $request->file('file');
            $filename = time() . '.' . $request->file('file')->extension();
            $filePath = public_path() . '/files/uploads/';
            $file->move($filePath, $filename);
        }
  }

Upvotes: 3

Sifb71
Sifb71

Reputation: 41

you can this code for upload file in Laravel:

 $request->file('upload_file')->move($path,$name);

Upvotes: 1

Zymawy
Zymawy

Reputation: 1626

You Could Use Simple Method It Can Save The File

$path = $request->file('avatar')->store('avatars');

For More Information Here

Upvotes: 1

Rubberduck1337106092
Rubberduck1337106092

Reputation: 1344

You can take a look at how i upload files, all files are accepted: first the code for the create.blade.php form

{!! Form::open(
   array(
     'url' => 'uploads',
     'method' => 'post',
      'class' => 'form',
      'novalidate' => 'novalidate',
      'files' => true)) !!}

     @include('uploadspanel.create_form')
{!! Form::close() !!}

Remember to set files to true

Then the uploadspanel.create_form

<div class="form-group">
    {!! Form::label('name', 'Name:') !!}
    {!! Form::text('name', null, ['class' => 'form-control']) !!}
</div>

<div class="form-group">
    {!! Form::label('file', 'Bestand:') !!}
    {!! Form::file('file',null,['class'=>'form-control']) !!}
</div>

@if(\Auth::user()->level == 2)
    <div class="form-group">
        {{ Form::label('approved', 'Beschikbaar voor:') }}
        {{ Form::select('approved', array(1 => 'Iedereen', 2 => 'monteurs', 3 => 'concept'), null, ['class' => 'form-control']) }}
    </div>
@else
    {{ Form::hidden('approved', 3) }}
@endif

<div class="form-group">
    {!! Form::submit('Bestanden uploaden',['class' => 'btn btn-primary form-control']) !!}
</div>

then the controller store function

public function store(UploadRequest $request){
        $extension = Input::file('file')->getClientOriginalExtension();
        $filename = rand(11111111, 99999999). '.' . $extension;
        Input::file('file')->move(
          base_path().'/public/files/uploads/', $filename
        );
        if(\Auth::user()->level == 2) {
            $approved = $request['approved'];
        } else {
            $approved = 3;
        }
        $fullPath = '/public/files/uploads/' . $filename;
        $upload = new Uploads(array(
            'name' => $request['name'],
            'format' => $extension,
            'path' => $fullPath,
            'approved' => $approved,
        ));
        $upload->save();
        $uploads = Uploads::orderBy('approved')->get();
        return view('uploadspanel.index', compact('uploads'));
    }

Upvotes: 0

Mustafa Ehsan Alokozay
Mustafa Ehsan Alokozay

Reputation: 5823

First you should add enctype="multipart/form-data" to your <form> tag. Then in your controller handle the file upload as follow:

class FileController extends Controller
{
    // ...

    public function upload(Request $request)
    {
        $uniqueFileName = uniqid() . $request->get('upload_file')->getClientOriginalName() . '.' . $request->get('upload_file')->getClientOriginalExtension());

        $request->get('upload_file')->move(public_path('files') . $uniqueFileName);

        return redirect()->back()->with('success', 'File uploaded successfully.');
    }

    // ...
}

Link to Laravel Docs for Handling File Uploads

Laravel casts the file type params in request to UploadedFile objects. You can see Symfony's UploadedFile class here for available methods and attributes.

Upvotes: 8

Leguam
Leguam

Reputation: 1212

First of all, the documentation tells you exactly what to do here.

What you want to do is adding this to your <form> tag: enctype="multipart/form-data" (This allows you to upload data), set a method(get/post) and an action (url).

Then you want to set up your routes.

For example: Route::post('/pdf/upload', 'FileController@upload');

This way you make sure that when you send the form it will go to your FileController with upload as function.

In your controller you want to declare the file as explained in the docs.
$file = $request->file('photo');.

From this point you can do whatever you'd like to do with the file ($file). For example uploading it to your own server.

Upvotes: 4

Related Questions