首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何给上传为FormData的Blob一个文件名?

如何给上传为FormData的Blob一个文件名?
EN

Stack Overflow用户
提问于 2011-07-12 21:31:15
回答 8查看 128.3K关注 0票数 87

我目前正在上传从剪贴板粘贴的图像,代码如下:

代码语言:javascript
复制
// 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",
            true
        );
request.send(form);

在上传的表单字段中,receive的名称类似于: Blob157fce71535b4f93ba92ac6053d81e3a

有没有办法在不进行任何服务器端通信的情况下,在客户端设置或接收这个文件名?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-01-30 23:18:31

对于Chrome、Safari和Firefox,只需使用以下代码:

代码语言:javascript
复制
form.append("blob", blob, filename);

(参见MDN documentation)

票数 160
EN

Stack Overflow用户

发布于 2016-01-29 01:20:26

在这里添加这个,因为它似乎不在这里。

除了优秀的form.append("blob",blob, filename);解决方案之外,您还可以将blob转换为File实例:

代码语言:javascript
复制
var blob = new Blob([JSON.stringify([0,1,2])], {type : 'application/json'});
var fileOfBlob = new File([blob], 'aFileName.json');
form.append("upload", fileOfBlob);
票数 38
EN

Stack Overflow用户

发布于 2011-07-21 10:34:34

由于您要将数据粘贴到剪贴板,因此没有可靠的方法来了解文件的来源及其属性(包括名称)。

最好的办法是想出一个自己的文件命名方案,并随blob一起发送。

代码语言:javascript
复制
form.append("filename",getFileName());
form.append("blob",blob);

function getFileName() {
 // logic to generate file names
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6664967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档