使用 Laravel 5 上传 pdf 文件

新手上路,请多包涵

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

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

原文由 hendraspt 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 563
2 个回答

首先,您应该将 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.');
    }

    // ...
}

链接到 Laravel Docs 以处理文件上传

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

原文由 Mustafa Ehsan Alokozay 发布,翻译遵循 CC BY-SA 3.0 许可协议

首先,文档会告诉你 在这里 做什么。

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

然后你想设置你的路线。

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

通过这种方式,您可以确保当您发送表单时,它将以 upload 作为功能转到您的 FileController

在您的控制器中,您想按照文档中的说明声明文件。

$file = $request->file('photo');

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

原文由 Leguam 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏