diff --git a/app/Uploads/ImageService.php b/app/Uploads/ImageService.php index 71fd2cd4e..ae1c6a254 100644 --- a/app/Uploads/ImageService.php +++ b/app/Uploads/ImageService.php @@ -442,7 +442,12 @@ class ImageService extends UploadService return null; } - return 'data:image/' . pathinfo($uri, PATHINFO_EXTENSION) . ';base64,' . base64_encode($imageData); + $extension = pathinfo($uri, PATHINFO_EXTENSION); + if ($extension === 'svg') { + $extension = 'svg+xml'; + } + + return 'data:image/' . $extension . ';base64,' . base64_encode($imageData); } /** diff --git a/tests/Entity/ExportTest.php b/tests/Entity/ExportTest.php index 683f23674..e3a74f64d 100644 --- a/tests/Entity/ExportTest.php +++ b/tests/Entity/ExportTest.php @@ -3,6 +3,7 @@ use BookStack\Entities\Chapter; use BookStack\Entities\Page; +use BookStack\Uploads\HttpFetcher; class ExportTest extends TestCase { @@ -148,4 +149,17 @@ class ExportTest extends TestCase $resp->assertDontSee($page->updated_at->diffForHumans()); } + public function test_page_export_sets_right_data_type_for_svg_embeds() + { + $page = Page::first(); + $page->html = ''; + $page->save(); + + $this->asEditor(); + $this->mockHttpFetch(''); + $resp = $this->get($page->getUrl('/export/html')); + $resp->assertStatus(200); + $resp->assertSee('