使用Laravel 5上传pdf文件

问题描述 投票:4回答: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>

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

php laravel http file-upload laravel-5
5个回答
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的可用方法和属性。


3
投票

首先,文档告诉你究竟做什么here

你想要做的是将它添加到你的<form>标签:enctype="multipart/form-data"(这允许你上传数据),设置method(获取/发布)和action(网址)。

然后你想设置你的路线。

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

通过这种方式,您确保在发送表单时,它将以FileController作为函数转到upload

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

从这一点开始,你可以做任何你想对文件做的事情($file)。例如,将其上传到您自己的服务器。


1
投票

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

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

更多信息Here


1
投票

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

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

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'));
    }
© www.soinside.com 2019 - 2024. All rights reserved.