到目前为止,我已经完成以下工作:
Ajax请求:
$('#description').summernote({
callbacks: {
onImageUpload: function(files) {
for(var i=0; i < files.length; i++) {
$.upload('image', files[i]);
}
}
}
});
$.upload = function (file) {
let out = new FormData();
out.append('file', file, file.name);
$.ajax({
method: 'POST',
url: '/summer-uploads',
//check laravel document: https://laravel.com/docs/5.6/csrf#csrf-x-csrf-token
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
contentType: false,
cache: false,
processData: false,
dataType: 'JSON',
data: out,
success: function (r) {
$('#description').summernote('insertImage', r.url);
},
error: function (jqXHR, textStatus, errorThrown) {
console.error(textStatus + " " + errorThrown);
}
});
};
控制器:
public function summerUploads(Request $request)
{
if ($request->ajax()) {
$file = $request->input('image');
$store = $file->store('summer-uploads');
return url() . '/summer-uploads/' . $store;
}
return App::abort(404);
}
路线:
Route::any('summer-uploads', 'AdminController@summerUploads');
如果我尝试上传图像,则出现错误:控制台中出现500(内部服务器错误)。如果我尝试使用POSTMAN,则会收到“由于不活动而导致页面过期。”我的meta中的CSRF令牌存在,可能是个问题吗?
更新1。
我在chrome devtools中发现了错误:
{message: "Call to a member function store() on null",…}
exception
:
"Symfony\Component\Debug\Exception\FatalThrowableError"
file
:
"/Users/username/Sites/PROJECTNAME/app/Http/Controllers/AdminController.php"
line
:
174
message
:
"Call to a member function store() on null"