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


Laravel: Save uploaded file into 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会话中呢?

提前谢谢。

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

像往常一样将图像存储在一个目录中,然后在用户完成表单时将其移动到另一个目录。有一个定期运行的"垃圾收集"脚本,在用户一段时间后没有完成表单的情况下,该脚本会清除第一个目录中的任何图像。

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

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

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