首页 > 解决方案 > 当我使用 Laravel 将文件上传到 MySQL 时,我的数据库表中有两个单独的行用于每个请求

问题描述

我正在开发一个 Laravel Web 应用程序,该应用程序应该将 .pdf 文件从表单上传到数据库,用户在上传文件的同一表单中插入一些特定信息。一切正常,但在我的数据库表中,我创建了两个单独的行。第一个仅包含 file_name(原始客户端名称)和 file_size(原始客户端大小),但其他表单信息设置为默认值(NULL),在第二行中,我有相反的附加表单数据,设置正确,但是file_name 和 file_size 设置为默认值(NULL)这是我在控制器块中的功能

public function auteurAdd(Request $request)
{
    $parameters = $request->except(['_token']);
    $conference = new Conference();
    $conference->titre = $parameters['titre'];
    $conference->theme = $parameters['theme'];
    $conference->track = $parameters['track'];

    // upload file into database
    if ($request->hasFile('file')) {
        $filename = $request->file->getClientOriginalName();
        $filesize = $request->file->getClientSize();
        $file = new Conference;
        $file->file_name = $filename;
        $file->file_size = $filesize;
        $file->save();
    }
    $conference->save();

    return redirect()->route('auteurHome');
}

这是表格

<form method="post" action="{{route('auteurAdd')}}" class="text-center border border-light p-5"
      enctype="multipart/form-data">
    {{ csrf_field() }}
    <p class="h4 mb-4">Upload d'une conférence</p>
    <div class="form-group">
        <input name="titre" class="form-control mb-4" placeholder="Titre"/>
        <input name="theme" class="form-control mb-4" placeholder="Thème"/>
        <input name="track" class="form-control mb-4" placeholder="Track"/>
    </div>
    <div class="btn btn-mdb-color btn-rounded float-left">
        <input type="file" name="file">
    </div>
    <button class="btn btn-info btn-block my-4" type="submit">Envoyer</button>
</form>

标签: phpmysqllaravellaravel-5.3

解决方案


试试这样:

public function auteurAdd(Request $request)
{
    $parameters = $request->except(['_token']);
    $conference = new Conference();
    $conference->titre = $parameters['titre'];
    $conference->theme = $parameters['theme'];
    $conference->track = $parameters['track'];

    // upload file into database
    if ($request->hasFile('file')) {
        $filename = $request->file->getClientOriginalName();
        $filesize = $request->file->getClientSize();
        $conference->file_name = $filename;
        $conference->file_size = $filesize;
    }
    $conference->save();

    return redirect()->route('auteurHome');
}

推荐阅读