![]() |
慷慨的黄豆 · “两高”发布危害税收征管相关司法解释 ...· 8 月前 · |
![]() |
飘逸的苹果 · “真人秀”还是“偶像剧”? ...· 1 年前 · |
![]() |
追风的四季豆 · AC63芯片SDK资料记录_ac6323a_ ...· 1 年前 · |
![]() |
开心的登山鞋 · CAD转PDF线宽怎么设置 - 知乎· 1 年前 · |
![]() |
大鼻子的盒饭 · 【tno同人】意识形态-先锋三民主义 - 知乎· 1 年前 · |
我目前正在上传从剪贴板粘贴的图像,代码如下:
// Turns out getAsFile will return a blob, not a file
var blob = event.clipboardData.items[0].getAsFile(),
form = new FormData(),
request = new XMLHttpRequest();
form.append("blob",blob);
request.open(
"POST",
"/upload",
request.send(form);
在上传的表单字段中,receive的名称类似于: Blob157fce71535b4f93ba92ac6053d81e3a
有没有办法在不进行任何服务器端通信的情况下,在客户端设置或接收这个文件名?
还没有测试过,但这应该会提醒blobs数据url:
var blob = event.clipboardData.items[0].getAsFile(),
form = new FormData(),
request = new XMLHttpRequest();
var reader = new FileReader();
reader.onload = function(event) {
alert(event.target.result); // <-- data url
reader.readAsDataURL(blob);
该名称看起来是从对象URL GUID派生的。执行以下操作以获取从中派生该名称的对象URL。
var URL = self.URL || self.webkitURL || self;
var object_url = URL.createObjectURL(blob);
URL.revokeObjectURL(object_url);
在谷歌浏览器中,
object_url
将被格式化为
blob:{origin}{GUID}
,在火狐中将被格式化为
moz-filedata:{GUID}
。源是协议+主机+协议的非标准端口。例如,
blob:http://stackoverflow.com/e7bc644d-d174-4d5e-b85d-beeb89c17743
或
blob:http://[::1]:123/15111656-e46c-411d-a697-a09d23ec9a99
。您可能希望提取GUID并去掉所有破折号。
这真的取决于另一端的服务器是如何配置的,以及它如何处理blob post的模块。您可以尝试在您的帖子的路径中输入所需的名称。
request.open(
"POST",
"/upload/myname.bmp",
);