如何在Froala编辑器中上传图像名称和图像类型?

时间:2019-06-18 13:33:47

标签: ajax laravel

我在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);
   }

这就是我的处理方式。

1 个答案:

答案 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"}.