2017-01-19 3 views
1

Ich benutze quilljs für meinen Editor. Alle meine Daten werden von MySQL-Datenbank behandelt. Ich verwende Angularjs 1.x und für Backend Cakephp ist meine Rahmenarbeit. Ich versuche zur Zeit ein Forum Art von Seite zu bauen, in dem ich mehrere Bilder zusammen mit Text speichern möchten, die quilljsLaden Sie das Image auf dem Server hoch und fügen Sie den Dateipfad innerhalb des Image-Tags mit quilljs hinzu

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

formatiert wird unter Verwendung Dies ist, was zur Zeit in meiner Datenbank zu speichern. Nun, wenn es mehr großen Bilder kommen in dann Größe des Feldes wird es zu viel hoch ist für I Bild innerhalb severside Ordner hochladen möchte und Bildadresse innerhalb Bildtag drucken wie:

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

So kann ich holen Bild direkt aus gegebenem Ordner.

+0

Was ist die Frage? Vielleicht etwas über das Hochladen von Bildern mit diesen Paketen? Oder etwas anderes? Oder über base64? Vielleicht spezifisch für Quilljs, nicht relevant für MySQL? –

+0

meine Anforderung sind 1) Speichern formatiertem Text (was HTML-Format ist) innerhalb von MySQL, die getan wird 2) derzeit img Tag speichert es Bild im Base64-Format, die meine Datenbanklänge überschreiten, so dass ich es in einem bestimmten Ordner und den Pfad speichern möchte dieses Bild muss mit Bild-Tag in HTML drucken, so dass ich diese HTML zusammen mit IMG-Tag speichern kann ich hoffe, Sie verstanden meinen Punkt. – hardik

+0

Wenn Ihre Bilder so groß sind, dass Sie die MySQL-Grenzen überschreiten, sollten Sie das Bild besser in einer Datei (außerhalb von MySQL) speichern und den Link einfach in die Datei "" einfügen. (Ich kann mit MySQL helfen, aber nicht mit CakePHP/etc.) –

Antwort

2

Ich habe einen kleinen Trick mit quilljs gemacht. Ich habe einige Code in quilljs setzen, das Bild zu meinem PHP-Skript auf Zeilennummer 8663 nach if (typeof value === 'string') diese Aussage i-Skript senden, das Bildwert zu meinem PHP-Skript hinzugefügt haben

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

wo node.setAttribute('src', path); Sätze Weg, die ich von kehre zurück sendet PHP-Skript setzt es auf Bild-Tag dh <img src="../img/709f2d0be9d13c645037f1b9bb066b00a6d7/image1.jpg"> und dann legt es es im Editor und dann können wir diese Daten im Editor speichern. So habe ich dieses Problem gelöst.

meine PHP-Code ist

 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

können Sie den PHP-Code, den Sie implementiert haben, posten. – prudhvi259

+0

Ich habe auch ein ähnliches Problem, aber mit Laravel als Backend. – prudhvi259

1

Sie müssen einen benutzerdefinierten Image-Handler (like here) erstellen und die Länge der Base64-Zeichenkette mit fileReader überprüfen.

+0

Ich habe Ihren Vorschlag verwendet, aber es hat mir geholfen, aber ich stehe vor einem anderen Problem mit dem Hochladen von Bildern. Ich habe versucht, Bild mit eckigen und Javascript jeweils hochladen, aber in beiden Fällen funktioniert es nicht. so bleibt mein Problem gleich – hardik

Verwandte Themen