2017-01-19 10 views
1

Я использую quilljs для моего редактора. Все мои данные обрабатываются базой данных mysql. Я использую Angularjs 1.x, а для бэкэнда Cakephp - это моя кадровая работа. Сейчас я пытаюсь создать форум вид страницы, в которой я хочу сохранить несколько изображений вместе с текстом, который будет отформатирован с использованием quilljsЗагрузить изображение на сервере и добавить путь к файлу внутри тега изображения с помощью quilljs

<p>sd<img src="data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgA....SUVORK5CYII=" alt="i am image"><b>it is image of earth</b></p> 

Это то, что в настоящее время хранения в моей базе данных. Теперь, если есть несколько больших изображения приходят в то размер поля будет слишком высоки там, я хочу, чтобы загрузить изображение в severside папки и хочу, чтобы напечатать адрес изображения внутри тега изображений, как:

<p>sd<img src="../img/709f2d0be9d13c645037f1b9bb066b00a6d7/image1.jpg" alt="i am image"><b>it is image of earth</b></p> 

Так что я могу принести изображение непосредственно из данной папки.

+0

Какой вопрос? Возможно, что-то о загрузке изображений с использованием этих пакетов? Или что-то другое? Или о base64? Может быть, конкретный для Quilljs, не относящийся к MySQL? –

+0

Мое требование: 1) хранить форматированный текст (который является html-форматом) в mysql, который выполняется 2) в настоящее время в теге img он хранит изображение в формате base64, которое превышает мою длину базы данных, поэтому я хочу сохранить его в определенной папке и в пути этого изображения нужно печатать с тегом изображения в html, поэтому я могу сохранить этот html вместе с тегом img Надеюсь, вы поняли мою точку зрения. – hardik

+0

Если ваши изображения настолько велики, что вы попадаете в пределы MySQL, вам лучше хранить изображение в файле (за пределами MySQL) и просто поместить ссылку в ''. (Я могу помочь с MySQL, но не с cakephp/etc.) –

ответ

2

Я сделал небольшой трюк с quilljs. я поставил код внутри quilljs, которые посылают изображения к моему PHP скрипту на номере строки 8663 после if (typeof value === 'string') этого заявления я добавил скрипт, который отправляет значение изображений на мой PHP скрипт

var img = { 
       'img' : value 
      } 
      $.ajax({ 
        url: "../Writers/writerCertificateupload", 
        data: img, 
        contentType: undefined, 
        type: 'post' 
      }).success(function(path){ 
       node.setAttribute('src', path); 
      }) 

где node.setAttribute('src', path); устанавливает путь, который я возвращался из php, он устанавливает его на теге изображения, то есть <img src="../img/709f2d0be9d13c645037f1b9bb066b00a6d7/image1.jpg"> , а затем он устанавливает его внутри редактора, а затем мы можем сохранить эти данные в редакторе. вот как я решил эту проблему.

мой PHP код

 public function writerCertificateupload()//pending 
    { 
      $id = $this->Auth->user('id'); 
      $this->autoRender=false; 
      define('UPLOAD_DIR', 'files/post/'); 
      $img = $_POST['img']; 
      $img = str_replace('data:image/jpeg;base64,', '', $img); 
      $img = str_replace(' ', '+', $img); 
      $data = base64_decode($img); 
      $file = UPLOAD_DIR . uniqid() . '.jpg'; 
      $success = file_put_contents($file, $data); 

      $file = "../".$file; 
      print $success ? $file : 'Unable to save the file.'; 
    } 
+0

вы можете опубликовать PHP-код, который вы внедрили. – prudhvi259

+0

Я также сталкиваюсь с аналогичной проблемой, но использую laravel в качестве backend. – prudhvi259

1

Вам необходимо создать собственный обработчик изображения (like here) и проверить длину строки base64 с помощью fileReader.

+0

Я использовал ваше предложение, это помогло мне, но я столкнулся с другим вопросом с загрузкой изображения. Я попытался загрузить изображение с помощью углового и javascript соответственно, но в обоих случаях он не работает. поэтому моя проблема остается такой же. – hardik

 Смежные вопросы

  • Нет связанных вопросов^_^