使用Laravel 5上传PDF文件

7

我正在使用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>

那么接下来我该做什么呢?在我的控制器和路由中应该添加什么内容呢?


你是否尝试先阅读文档?https://laravel.com/docs/5.2/requests#files - CrazyCrow
6个回答

8

首先,您应该在<form>标签中添加enctype="multipart/form-data"。然后在您的控制器中按照以下方式处理文件上传:

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

    // ...
}

点击链接查看处理文件上传的 Laravel 文档

Laravel 会将请求中的文件类型参数转换为 UploadedFile 对象。您可以在 Symfony 的 这里 查看可用的方法和属性。


你必须使用 $request->file。 - Ali Sharifi Neyestani

4
首先,文档告诉你在此处需要执行哪些操作。
你需要将<form>标签添加以下内容:enctype="multipart/form-data"(允许你上传数据),设置一个方法(get/post)和一个动作(url)。
然后你需要设置路由。
例如: Route::post('/pdf/upload', 'FileController@upload'); 这样当你提交表单时,它会传递到FileController中的函数upload
在控制器中,你需要按照文档中的说明声明文件。 $file = $request->file('photo'); 从这一点开始,你可以对文件($file)做任何你想做的事情。例如将它上传到你自己的服务器。

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

1

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

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

更多信息请点击这里

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接