纯粹出于好奇,哪些浏览器可以进行Base64图像嵌入工作?我指的是这个.
我意识到它对于大多数事情来说通常不是一个好的解决方案,因为它会增加页面大小 - 我只是好奇.
一些例子:
HTML:
<img alt="Embedded Image" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA..." />
Run Code Online (Sandbox Code Playgroud)
CSS:
div.image {
width:100px;
height:100px;
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...);
}
Run Code Online (Sandbox Code Playgroud) 我在字符串中有base64编码的二进制数据.
const contentType = 'image/png';
const b64Data = 'iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==';
Run Code Online (Sandbox Code Playgroud)
我想创建一个blob:包含此数据的URL并将其显示给用户.
const blob = new Blob(????, {type: contentType});
const blobUrl = URL.createObjectURL(blob);
window.location = blobUrl;
Run Code Online (Sandbox Code Playgroud)
我还没有弄清楚如何创建Blob.
在某些情况下,我可以通过使用data:URL 来避免这种情况.
const dataUrl = `data:${contentType};base64,${b64Data}`;
window.location = dataUrl;
Run Code Online (Sandbox Code Playgroud)
但是在大多数情况下,data:URL非常大.
如何Blob在JavaScript中将base64字符串解码为对象?
"data:"URL方案值是否有任何大小限制?我对流行的网络浏览器的局限感兴趣.换句话说,多久可以data:image/jpg;base64,base64_encoded_data成为<img src="data:image/jpg;base64,base64_encoded_data" />或background-image: url(data:image/jpg;base64,base64_encoded_data)?
我正在服务器中生成一个PDF文档,我想在客户端显示.服务器端如下所示:
ByteArrayOutputStream baos = generatePDF();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=file.pdf");
response.setContentLength(baos.size());
baos.writeTo(response.getOutputStream());
Run Code Online (Sandbox Code Playgroud)
在客户端中,我有以下代码来检索PDF:
$.ajax({
type: "POST",
url: url,
data: {"data": JSON.stringify(myData)},
success: function(data, textStatus, jqXHR) {
window.open("data:application/pdf," + escape(data));
},
error: function(jqXHR) {
showError("...");
}
});
Run Code Online (Sandbox Code Playgroud)
它看起来很好,新窗口打开,但PDF没有显示.它总是显示为空文档.
然而,如果客户端看起来像以下,它工作正常:
var form = $("<form target='_blank'>").attr({
action : myURL,
method : "POST"
});
var input1 = $("<input type='hidden'>").attr({
"name": "data",
value: JSON.stringify(myData)
});
form.append(input1);
$("body").append(form);
form.submit();
form.remove();
Run Code Online (Sandbox Code Playgroud)
但我不能使用第二种方式因为我需要管理错误,我不能使用form.submit().
关于PDF发生了什么的任何想法?