我的img
src
blob
个标签
<img src="blob:http%3A//mydoma.in/43b92f51-3f04-4027-b6a4-01c5bcc68b2d" />
通过使用TinyMCE 4选项paste_data_images: true
粘贴(Ctrl + V)来创建它们。
我想将这些图像上传到我的Python Django服务器(将它们存储为静态和一些处理,例如应用水印)。但问题是我不知道如何获取blob对象,如果我只有一个网址blob:http%3A//mydoma.in/43b92f51-3f04-4027-b6a4-01c5bcc68b2d
答案 0 :(得分:1)
似乎我不需要这个,因为&#34; blob://&#34; POST到服务器时自动替换为base64数据,所以我只需解析服务器上的base64并将解码后的字节写入磁盘,并将img标签中的src替换为上传的文件URL。
我使用python3 Django,这是我的代码,也许它对某些人有用:
# post.content here is uploaded content of text field
post.content = re.sub(
r'<img (class=".*?" )?src="data:image/(?P<fmt>.+?);base64,(?P<dat>(?:[A-Za-z0-9+/]{4}){2,}(?:[A-Za-z0-9+/]{2}[AEIMQUYcgkosw048]=|[A-Za-z0-9+/][AQgw]==))".*?>',
lambda x: proc_blob(post, x), post.content)
def proc_blob(post, mo):
data = mo.group('dat')
fmt = mo.group('fmt')
fname = "{}_{}.{}".format(post.id, str(time.time()).replace('.', '_'), fmt)
full_name = os.path.join(IMAGES_ROOT, fname)
fh = open(full_name, "wb")
fh.write(base64.b64decode(data))
fh.close()
# you can apply a watermark here
# Optionally in addition we can store image filename in database (for example to remeber what images are related to post)
im = app.models.Image(post=post, filename=fname)
im.save()
return '<img src="/images/{}" class="img-responsive" />'.format(fname)