Uploads de imagens com CKEditor e Laravel

Existem documentos lá fora, mas todos eles perdem alguns detalhes.

Aqui está:

Crie uma rota

Exemplo:

Route::post('/upload_image', function() {
$CKEditor
= Input::get('CKEditor');
$funcNum
= Input::get('CKEditorFuncNum');
$message
= $url = '';
if (Input::hasFile('upload')) {
$file
= Input::file('upload');
if ($file->isValid()) {
$filename
= $file->getClientOriginalName();
$file
->move(storage_path().'/images/', $filename);
$url
= public_path() .'/images/' . $filename;
} else {
$message
= 'An error occured while uploading the file.';
}
} else {
$message
= 'No file uploaded.';
}
return '<script>window.parent.CKEDITOR.tools.callFunction('.$funcNum.', "'.$url.'", "'.$message.'")</script>';
});

Adicione o seguinte à configuração do CKEditor:

// Construct path to file upload route
// Useful if your dev and prod URLs are different
var path = CKEDITOR.basePath.split('/');
path
[ path.length-2 ] = 'upload_image';
config
.filebrowserUploadUrl = path.join('/').replace(//+$/, '');

// Add plugin
config
.extraPlugins = 'filebrowser';

Parabéns! Agora você tem uma guia Upload na caixa de diálogo da imagem.

Coisas que me levaram algum tempo:

  • Em nenhum lugar foi mencionado que você precisa do filebrowserplugin.
  • Certifique-se de que o URL aponta para a rota exata. Dependendo de suas configurações, /upload_image/pode redirecionar para o /upload_imagequal interromperá a solicitação POST.