【发布时间】:2020-01-03 14:26:19
【问题描述】:
我想将 URL 从 data:image base64 更改为 blob。这是生成 base64 url 的原始代码:
<script>
$(window).load(function(){
function readURL() {
var $input = $(this);
var $newinput = $(this).parent().parent().parent().find('.portimg ');
if (this.files && this.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
reset($newinput.next('.delbtn'), true);
$newinput.attr('src', e.target.result).show();
$newinput.after('<div class="delbtn delete_upload" title="Remove"><span class="bbb-icon bbb-i-remove2"></span></div>');
$("form").on('click', '.delbtn', function (e) {
reset($(this));
$("form").find('#rright-<?php echo $i;?>').hide();
});
}
reader.readAsDataURL(this.files[0]);
}
}
$(".file").change(readURL);
function reset(elm, prserveFileName) {
if (elm && elm.length > 0) {
var $input = elm;
$input.prev('.portimg').attr('src', '').hide();
if (!prserveFileName) {
$($input).parent().parent().parent().find('input.file ').val("");
//input.fileUpload and input#uploadre both need to empty values for particular div
}
elm.remove();
}
}
});
</script>
我想要的是调用 Object.createObjectURL(this.files[0]) 来获取对象 URL,并将其用作 img 的 src; (只是不要打扰 FileReader)。
【问题讨论】:
-
你已经在
this.files[0]中拥有了 Blob,为什么还要花钱把它从 base 64 翻译回来? -
@HereticMonkey 但是我如何得到它而不是 base64?
-
你想从哪里获得 Blob?我的意思是您真正需要做的就是将
this.files[0]缓存在可以使用它的某个变量中。 -
@HereticMonkey 我应该更好地解释自己。现在链接看起来像这样:
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAY0AAAGNCAIAAABixbqGAAAABGdBTUEAALGPC/xhBQAAAAlw......,它有一英里长。我希望它看起来像这样src="blob:https://mysite.c o m/98cd2703-9e3f-4115-8e20-abdc16fef4ad" -
请edit你的问题说清楚。那么你真正想要的只是调用
Object.createObjectURL(this.files[0])来获取对象URL,并将其用作src的img;只是不要打扰FileReader。
标签: javascript jquery html