我在froala编辑器中上传了图像,但是在ajax中没有获得图像名称和图像类型。如何使用laravel将文件移到我自己的服务器上?
在ajax中:
let editor = new FroalaEditor('div#edit', {}, function () {});
通过此操作,我将文件名作为字符串获取。
在Laravel控制器中:
$dom = new \DomDocument();
$dom->loadHtml($issue_description, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$images = $dom->getElementsByTagName('img');
foreach($images as $k => $img){
$data = $img->getAttribute('src');
list($type, $data) = explode(',', $data);
list(, $data) = explode(',', $data);
$data = base64_decode($data);
$image_name= "/upload/" . time().$k.'.png';
$path = public_path() . $image_name;
file_put_contents($path, $data);
$img->removeAttribute('src');
$img->setAttribute('src', $image_name);
}
这就是我的处理方式。
答案 0 :(得分:0)
首先,Froala编辑器提供了非常详细的文档,我很容易从他们的文档中摘取的东西之一是以下脚本:
<script>
new FroalaEditor('#edit', {
// Set the file upload URL.
imageUploadURL: '/upload_image.php',
imageUploadParams: {
id: 'my_editor'
}
})
</script>
这意味着您需要编写一个可以处理Image Upload Service的函数或类。每当Froala上载图片时,它都会向您的网址执行Ajax请求,或在您的情况下发送laravel。
其中一个到达Laravel,然后在您的控制器或函数中,您可以执行以下操作:
$image = $request->file('name_of_file') or using raw PHP $filename = explode(".", $_FILES[$fieldname]["name"]);
您的函数然后应返回一个带有上载图像的URL字符串的响应,例如以下示例:
E.g.: {"link":"http://server_address/uploads/name_of_file"}.