使用Laravel 5上传pdf文件

时间:2016-04-19 10:31:44

标签: php laravel http file-upload laravel-5

我正在使用Laravel 5.2,我想创建一个可以上传pdf文件的表单。我想将该文件添加到“public”文件夹中的“files”文件夹中。

这是我的观点:

<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>

接下来我该怎么办?我应该在控制器和路线中添加什么?

6 个答案:

答案 0 :(得分:7)

首先,您应该将enctype="multipart/form-data"添加到<form>标记中。然后在您的控制器处理文件上传,如下所示:

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将请求中的文件类型params转换为UploadedFile个对象。您可以查看Symfony的UploadedFilehere了解可用的方法和属性。

答案 1 :(得分:3)

首先,文档会准确地告诉您要做什么here

您要将其添加到<form>标记中: enctype="multipart/form-data"(这允许您上传数据),设置method(获取/发布)和action(网址)。

然后你想设置你的路线。

例如: Route::post('/pdf/upload', 'FileController@upload');

通过这种方式,您确保在发送表单时,它会以FileControllerupload作为功能。

在您的控制器中,您希望按照文档中的说明声明文件 $file = $request->file('photo');

从这一点开始,您可以对文件($file)执行任何操作。例如,将其上传到您自己的服务器。

答案 2 :(得分:2)

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

答案 3 :(得分:1)

你可以使用它可以保存文件的简单方法

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

了解更多信息Here

答案 4 :(得分:1)

您可以在Laravel中使用此代码上传文件:

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

答案 5 :(得分:0)

您可以查看我如何上传文件,接受所有文件: 首先是create.blade.php表单的代码

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

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

请记住将文件设置为true

然后是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>

然后是控制器存储功能

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