php - Laravel session::has('key') 新请求后不存在
问题描述
第一次使用 Laravel,有点困惑。
在控制器操作中执行 ajax 请求,并且在我之前存储的下一个请求会话密钥之后不存在。
此代码的目的是保存一组图像并将它们的名称存储到会话以供进一步工作。
我的父页面和 ajax 请求中的会话 ID 相同。应用程序还没有用户身份验证。
(更新)会话驱动程序默认为“文件”。
为什么会话密钥不能正常保存?
public function upload(Request $request)
{
$rules = ['photo.*' => 'image|mimes:jpeg,png,jpg|max:2048'];
$validator = Validator::make($request->all(), $rules);
$files = [];
$fileNames = [];
$errors = [];
if ($validator->fails()) {
$errors = ArrayHelper::getFinalValuesRecursive($validator->errors()->messages());
} else {
foreach ($request->file('photo') as $key => $value) {
$imageName = $key . md5(time() . $key) . '.' . $value->getClientOriginalExtension();
$value->move(public_path('uploads'), $imageName);
$fileNames[] = $imageName;
$files[] = '/uploads/' . $imageName;
}
$sessionFiles = [];
if (Session::has('photo')) {
$sessionPhoto = Session::get('photo');
foreach ($sessionPhoto as $value) {
$sessionFiles[] = $value;
}
}
Session::put('photo', array_merge($sessionFiles, $fileNames));
}
Javascript
$(document).ready(function () {
$('#photo').on('change', function () {
var fileData = $('#photo').prop('files');
var formData = new FormData();
for (var i = 0; i < fileData.length; i++) {
formData.append('photo[]', fileData[i]);
}
formData.append("_token", $('input[name="_token"]').attr('value')); //csrf
$.ajax({
url: '{{route('adverts.upload')}}',
dataType: 'text',
cache: false,
contentType: false,
processData: false,
data: formData,
type: 'post',
success: function (response) {
response = $.parseJSON(response);
if (response.errors.length) {
for (var i = 0; i < response.errors.length; i++) {
$('#image_errors')
.append('<div class="invalid-feedback" style="display: block;">' + response.errors[i] + '</div>');
}
} else {
$('#image_errors').html('');
var totalFile = response.files.length;
for (var i = 0; i < totalFile; i++) {
$('#image_preview').append("<img src='" + response.files[i] + "'>");
}
}
}
});
});
});
解决方案
推荐阅读
- python - 为什么我的 SQLAlchemy 更新查询没有更新?
- javascript - 如何在 Kendo Grid 中获取选中复选框的父元素 id
- git - 向 `git status` 发送 SIGKILL 是否安全?
- firebase - Flutter 中的 Firebase 数据检索返回一个空字符串
- javascript - 如何修复 - TypeError:无法读取 null 的属性“评论”
- javascript - PropTypes.defaultProps 用于无状态组件中的函数
- javascript - 在 Javascript 中查找下周的日期
- java - Swagger 与 Java Play 框架的集成
- webrtc - 向不同的对等点多次添加轨道
- angular - 删除时总计不更新