Laravel: 将上传的文件保存到会话中

Laravel: Save uploaded file into Session

与其将文件直接上传并移动到服务器上的某个位置,我宁愿将其保存到 Session 中,稍后根据条件上传。

这是我目前将文件保存到我的服务器的方法:

public function step3store() {

    $file            = Input::file('file');
    $identifier      = date("Ymd") . " - " . Session::get('lastName') . "_" . Session::get('firstName');

    $destinationPath = base_path() . '/uploads/'. $identifier ;
    $extension       = $file->getClientOriginalExtension();
    $filename        = $identifier . " - " . uniqid() . "." . $extension;

    $upload_success = Input::file('file')->move($destinationPath, $filename);

    if( $upload_success ) {
        return Response::json('success', 200);
    } else {
        return Response::json('error', 400);
    }

}

我正在考虑改用这样的东西:

    Session::put([
        'file' => Input::get('file'),
    ]);

但是每当我检查我的会话时,在我上传文件后,我得到 "file" 的值 "null"。

由于我每个 Ajax 上传多个文件,我不确定它是否以某种方式破坏了我将文件放入会话的方式。

那么,如何将每个 Ajax 的多个文件保存到 Laravel 会话中?

提前致谢。

这就是你应该做的。在会话中存储整个图像不是一个好主意。会话 cookie 不能存储大数据。

将图像存储在服务器上。给图片一个id。并将该 ID 存储在会话中。

会话仅适用于小而琐碎的数据,不适用于大数据和图像文件。

像往常一样将图像存储在一个目录中,如果用户完成表单,则将它们移动到另一个目录。有一个定期运行的“垃圾收集”脚本,可以在用户一段时间后没有完成表单的情况下清除第一个目录中的所有图像。

你说的“只有那时我才想使用真正的服务器资源”是没有意义的,就好像你要将文件保存到会话中然后 仍然 使用你的服务器的资源。会话被写入磁盘。如果您要将文件作为 BLOB 存储到数据库中也是一样的(也不要这样做)。您仍在使用服务器的资源。因此,将文件保存到会话的理论不会停止使用服务器的资源。