【发布时间】:2017-09-29 10:38:17
【问题描述】:
我正在尝试在服务器端使用 Laravel 5.3 实现 TinyMCE 图像上传:
这是我的 TinyMCE JS,目前在刀片模板中:
<script src="{{ URL::to("/tinymce/tinymce.min.js") }}"></script>
<script>
tinymce.init({
selector: 'textarea',
plugins: [
"advlist autolink lists link image charmap print preview hr anchor pagebreak",
"searchreplace wordcount visualblocks visualchars code fullscreen",
"insertdatetime media nonbreaking save table contextmenu directionality",
"emoticons template paste textcolor colorpicker textpattern"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image media",
relative_urls: false,
image_title: true,
automatic_uploads: true,
images_upload_url: '/discussions/save_images/',
file_picker_types: 'image',
images_upload_credentials: true,
file_picker_callback: function(cb, value, meta) {
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.onchange = function() {
var file = this.files[0];
var id = 'blobid' + (new Date()).getTime();
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
var blobInfo = blobCache.create(id, file);
blobCache.add(blobInfo);
cb(blobInfo.blobUri(), { title: file.name });
};
input.click();
}
});
</script>
我处理 TinyMCE 发出的 POST 请求的路线:
Route::post("/discussions/save_images/", 'Discussion\DiscussionController@saveImages');
我处理每次上传的操作:
public function saveImages(Request $request) {
$filename = sha1(uniqid()).'.'.request()->file("name")->getClientOriginalExtension();
$request->file("name")->move('/images/discussions/', $filename);
return json_encode(["location"=>"/images/discussions/".$filename]);
}
Laravel 抛出一个 TokenMismatchException。如何将 CSRF 令牌传递到 TinyMCE 发出的 POST 请求中?
我知道通常可以通过{{ csrf_token }} 在模板中访问此令牌,但我不确定有关 TinyMCE 的正确配置。
【问题讨论】:
标签: php laravel-5 tinymce csrf tinymce-4