【问题标题】:Upload pdf file using Laravel 5使用 Laravel 5 上传 pdf 文件
【发布时间】:2016-08-11 11:27:45
【问题描述】:

我正在使用 Laravel 5.2,我想制作一个可以上传 pdf 文件的表单。我想将该文件添加到“公共”文件夹中的文件夹“文件”中。

这是我的看法:

<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


【解决方案1】:

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

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

【讨论】:

  • 你必须使用 $request->file
【解决方案2】:

首先,文档会告诉您确切的操作here

你想要做的是将这个添加到你的&lt;form&gt;标签中: enctype="multipart/form-data"(这允许你上传数据),设置一个method(get/post)和一个action(url)。

然后你想设置你的路线。

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

这样您可以确保当您发送表单时,它会以upload 作为函数发送到您的FileController

在您的控制器中,您希望按照文档中的说明声明文件。
$file = $request-&gt;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);
            }
      }
    

    【讨论】:

      【解决方案4】:

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

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

      欲了解更多信息Here

      【讨论】:

        【解决方案5】:

        你可以用这个代码在 Laravel 中上传文件:

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

        【讨论】:

          【解决方案6】:

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

          {!! Form::open(
             array(
               'url' => 'uploads',
               'method' => 'post',
                'class' => 'form',
                'novalidate' => 'novalidate',
                'files' => true)) !!}
          
               @include('uploadspanel.create_form')
          {!! Form::close() !!}
          

          记得设置文件为真

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

          【讨论】:

            猜你喜欢
            • 2016-04-18
            • 1970-01-01
            • 2015-08-21
            • 2016-07-21
            • 1970-01-01
            • 2017-02-12
            • 2017-07-29
            • 2015-05-20
            • 2017-06-14
            相关资源
            最近更新 更多