Closed andreasplesch closed 5 years ago
Here is an example:
with the dataURL below.
Editing the base64 check to
if (result [2] === "base64")
allows for proper loading. I can prepare a short PR if useful.
dataURL
data:text/xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gCjwhRE9DVFlQRSBYM0QgUFVCTElDICJJU08vL1dlYjNELy9EVEQgWDNEIDMuMy8vRU4iICJodHRwOi8vd3d3LndlYjNkLm9yZy9zcGVjaWZpY2F0aW9ucy94M2QtMy4zLmR0ZCI+CjxYM0QgcHJvZmlsZT0nSW50ZXJjaGFuZ2UnIHZlcnNpb249JzMuMycgIHhtbG5zOnhzZD0naHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnIHhzZDpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uID0nIGh0dHA6Ly93d3cud2ViM2Qub3JnL3NwZWNpZmljYXRpb25zL3gzZC0zLjMueHNkICc+CjxoZWFkPgo8bWV0YSBuYW1lPSd0aXRsZScgY29udGVudD0nU3BoZXJlLngzZCcvPiAKPG1ldGEgbmFtZT0nZGVzY3JpcHRpb24nIGNvbnRlbnQ9J1NwaGVyZSBnZW9tZXRyaWMgcHJpbWl0aXZlIG5vZGUuJy8+IAo8bWV0YSBuYW1lPSdjcmVhdG9yJyBjb250ZW50PSdMZW9uYXJkIERhbHkgYW5kIERvbiBCcnV0em1hbicvPiAKPG1ldGEgbmFtZT0nY3JlYXRlZCcgY29udGVudD0nMSBKYW51YXJ5IDIwMDcnLz4gCjxtZXRhIG5hbWU9J21vZGlmaWVkJyBjb250ZW50PScyNyBEZWNlbWJlciAyMDA3Jy8+IAo8bWV0YSBuYW1lPSdyZWZlcmVuY2UnIGNvbnRlbnQ9JyBodHRwOi8vWDNkR3JhcGhpY3MuY29tICcvPiAKPG1ldGEgbmFtZT0ncmVmZXJlbmNlJyBjb250ZW50PScgaHR0cDovL3d3dy53ZWIzZC5vcmcveDNkL2NvbnRlbnQvZXhhbXBsZXMvWDNkUmVzb3VyY2VzLmh0bWwgJy8+IAo8bWV0YSBuYW1lPSdyaWdodHMnIGNvbnRlbnQ9J0NvcHlyaWdodCBEb24gQnJ1dHptYW4gYW5kIExlb25hcmQgRGFseSAyMDA3Jy8+IAo8bWV0YSBuYW1lPSdzdWJqZWN0JyBjb250ZW50PScgWDNEIGJvb2ssIFgzRCBncmFwaGljcywgWDNELUVkaXQsIGh0dHA6Ly93d3cueDNkR3JhcGhpY3MuY29tICcvPiAKPG1ldGEgbmFtZT0naWRlbnRpZmllcicgY29udGVudD0nIGh0dHA6Ly9YM2RHcmFwaGljcy5jb20vZXhhbXBsZXMvWDNkRm9yV2ViQXV0aG9ycy9DaGFwdGVyMDJHZW9tZXRyeVByaW1pdGl2ZXMvU3BoZXJlLngzZCAnLz4gCjxtZXRhIG5hbWU9J2dlbmVyYXRvcicgY29udGVudD0nWDNELUVkaXQgMy4zLCBodHRwczovL3NhdmFnZS5ucHMuZWR1L1gzRC1FZGl0Jy8+IAo8bWV0YSBuYW1lPSdsaWNlbnNlJyBjb250ZW50PScgLi4vbGljZW5zZS5odG1sJy8+CjwvaGVhZD4gCjxTY2VuZT4KPEJhY2tncm91bmQgc2t5Q29sb3I9JzEgMSAxJy8+IAo8Vmlld3BvaW50IGRlc2NyaXB0aW9uPSdCb29rIFZpZXcnIHBvc2l0aW9uPScwIDAgMycvPiAKPFNoYXBlPgo8U3BoZXJlLz4gCjxBcHBlYXJhbmNlPgo8TWF0ZXJpYWwvPgo8L0FwcGVhcmFuY2U+CjwvU2hhcGU+CjwvU2NlbmU+CjwvWDNEPiA=
decoded:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "http://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Interchange' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.3.xsd '>
<head>
<meta name='title' content='Sphere.x3d'/>
<meta name='description' content='Sphere geometric primitive node.'/>
<meta name='creator' content='Leonard Daly and Don Brutzman'/>
<meta name='created' content='1 January 2007'/>
<meta name='modified' content='27 December 2007'/>
<meta name='reference' content=' http://X3dGraphics.com '/>
<meta name='reference' content=' http://www.web3d.org/x3d/content/examples/X3dResources.html '/>
<meta name='rights' content='Copyright Don Brutzman and Leonard Daly 2007'/>
<meta name='subject' content=' X3D book, X3D graphics, X3D-Edit, http://www.x3dGraphics.com '/>
<meta name='identifier' content=' http://X3dGraphics.com/examples/X3dForWebAuthors/Chapter02GeometryPrimitives/Sphere.x3d '/>
<meta name='generator' content='X3D-Edit 3.3, https://savage.nps.edu/X3D-Edit'/>
<meta name='license' content=' ../license.html'/>
</head>
<Scene>
<Background skyColor='1 1 1'/>
<Viewpoint description='Book View' position='0 0 3'/>
<Shape>
<Sphere/>
<Appearance>
<Material/>
</Appearance>
</Shape>
</Scene>
</X3D> ```
Thank you for reporting this bug. Fix the regex an use now:
/^data:(.*?)(?:;charset=(.*?))?(?:;(base64))?,([^]*)$/
to parse the data url.
The base64 encoded example works and show a default sphere. :)
Thanks!
FileLoader uses this regex
It then uses .exec to apply to a URL. Here is an example:
But then it looks for
base64
in the result to convert back here: https://github.com/create3000/x_ite/blob/4c350320b62848514aeb1f9d6b3f92a303121fb2/src/x_ite/InputOutput/FileLoader.js#L461This seems off.
It should use result[2].
And it should compare to
base64
, not;base64