【问题标题】:Session not working in Jquery file upload plugin integration, laravel 5会话在 Jquery 文件上传插件集成中不起作用,laravel 5
【发布时间】:2026-01-22 00:05:01
【问题描述】:

我已经通过https://blueimp.github.io/jQuery-File-Upload/ 集成了 Jquery 文件上传插件。它工作完美。我已经将插件的server文件夹放在了laravel的/public中。现在我必须使用 session 变量来检查特定用户可用的最大文件大小,验证用户等。server/php 中有两个文件,如果你能看到的话。我正在尝试这样使用,这不会影响任何事情。 if (session_id() == '') { @session_start(); /* or Session:start(); */ } $uid=$_SESSION['id']; print $uid;

我还在 userController.php 的构造函数中使用$this->uid=$_SESSION['id']; 尝试了同样的事情,似乎没有任何效果。我不明白如何在此访问会话。或者我可以尝试的任何其他方式? 谢谢!

【问题讨论】:

  • 你是web中间件下的路由吗?您需要至少发布您的代码 routes.php 和您的控制器以及处理 ajax 或上传请求。

标签: php session laravel-5 jquery-file-upload


【解决方案1】:

12-05-16-vh 将 Jquery 文件上传器实现到 laravel

https://blueimp.github.io/jQuery-File-Upload/

从上面的链接下载 zipfile 把它们放在公共文件夹中(我放在公共/资产/供应商/) server/php 是保存重要代码(index.php,uploadhandler.php)的地方。 如果使用它,则无法访问会话。

最好的方法是对代码进行自定义 通过更改此行来更新插件/js 文件夹中的 ma​​in.js 网址:'服务器/php/' 到一些控制器路由 例如:网址:'file_uploader' 然后在 routes.php 中,为 file_uploader' 连接到控制器类

Route::post('file_uploader', 'userController@file_uploader');

Route::get('file_uploader', 'userController@file_uploader'); Route::DELETE('file_uploader', 'userController@file_uploader');

在userController中,创建一个函数,然后它可以初始化uploadHandler类的实例(我们将放置在单独的控制器中) 在 userController 的开头添加这个 使用 App\Http\Controllers\UploadHandler;

然后用这个方法创建 UploadHandler 的实例

public function file_uploader(Request $request)
{
     $upload_handler = new UploadHandler();
}

创建一个名为 UploadHandler 的控制器,添加所有的命名空间和其他东西, 复制插件的 UploadHandler.php 中的 UploadHandler 类。现在在这个 UploadHandler 类构造器中,您可以调用您的会话(确保在控制器的开头编写 use Session;

对于删除文件, 更新 $file->deleteUrl 对象 public function set_additional_file_properties($file) 现在应该如下所示

$file->deleteUrl= 'file_uploader?'
        .$this->get_singular_param_name()
        .'='.rawurlencode($file->name);

我在上面发布了一个粗略的答案,您可以采取一些解决方法使其易于访问。

【讨论】:

    最近更新 更多