URL.createObjectURL返回一个前缀为null的blob.例如:Blob:null/12415-63

URL.createObjectURL returns a blob with null prepended. Eg : Blob:null/12415-63

本文关键字:null 12415-63 blob 例如 Blob 前缀 返回 createObjectURL 一个 URL      更新时间:2023-09-26

blob在开始时已预处理了null,例如:blob:null/72438-4637-23673-34721。但当我使用与src相同的方法时,它会显示正确的图像。

我正在使用URL.createObjectURL调用。我也尝试过使用webkitURL。两者都返回一个在开头附加了null的blob。此外,URL和webkitURL返回的blob值也不相同。

这是的代码片段

        var dataUrl = canvas.toDataURL();
        // The last piece of the data URL after the comma
        var byteString = atob(dataUrl.split(',')[1]);
        // Populate an array buffer
        var arrayBuffer = new ArrayBuffer(byteString.length);
        var uint8Array = new Uint8Array(arrayBuffer);
        for (var i = 0; i < byteString.length; i++) {
            uint8Array[i] = byteString.charCodeAt(i);
        }
        var blob = new Blob([uint8Array], { type: "image/png" });
        var blobVal = URL.createObjectURL(blob);

此处blobVal具有"blob:null/124-5678-9012-…"

这是源,文件系统和沙盒iframe(可能还有其他)的源为null。如果你设置了一个本地服务器,它应该说http%3A//localhost,这是http://localhost url编码的

    var arrayBuffer = new ArrayBuffer(100);
	var uint8Array = new Uint8Array(arrayBuffer);
	for (var i = 0; i < 100; i++) {
		uint8Array[i] = i;
	}
	var blob = new Blob([uint8Array], { type: "image/png" });
	var blobVal = URL.createObjectURL(blob);
	$('div').html(blobVal);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

这个是http%3A//fiddle.jshell.net
http://jsfiddle.net/thsn3ayp/