粘贴大文件
Pasting large files
本文关键字:文件 更新时间:2023-09-26
我正在写一个插件来处理文件上传。我认为实现粘贴功能将是很棒的(你有多少次只是想粘贴,而不是打开照片编辑器,然后将其保存为文件,然后上传,但我离题了)。到目前为止,我所做的都是有效的,除了当被粘贴的文件变得太大时。我不能告诉你"太大"是什么大小,因为我正在做一个截图选择并保存到剪贴板。
我当前的代码看起来像
document.getElementById('AJS').onpaste = function (e) {
var items = (e.clipboardData || e.originalEvent.clipboardData).items,
blob = items[0].getAsFile();
if (blob && blob.type.match(T.s.accept) && T.currentlength < T.s.maxFiles) {
T.process(param1, param2, param3, param4, items[0].getAsFile());
}
};
T.process
T.process = function (file, i, changing, target, pasteblob) {
var fr = new FileReader();
fr.onload = function (e) {
var blob = pasteblob || new Blob([e.target.result], {type: file.type});
var dataURL = (win.URL || win.webkitURL).createObjectURL(blob);
var index = changing ? i : T.currentlength;
var filedata = {};
if (file.type.match('image/*')) {
var img = new Image();
img.onload = function () {
// Doing stuff
};
img.src = dataURL;
} else {
// Doing stuff
}
};
fr.readAsArrayBuffer(pasteblob || file);
};
对于较大的文件,来自blob = items[0].getAsFile()
的blob返回大小为0。其他人遇到过这个问题吗?你是如何克服它的?
注意:我使用的是最新的Chrome在Ubuntu 14.04
虽然除了我自己对此事的个人研究之外,我没有任何参考资料,但似乎Ubuntu版本的chrome上有一个错误,阻止用户使用本机JS api复制和粘贴。如果你试图用Ubuntu Chrome在GMail邮件中粘贴截图,你会得到一个错误,但这个错误在任何其他版本的Chrome中都不会出现。对于我上面的代码也是一样的。我在本机windows和OS X环境中测试了它,运行指向我的机器的chrome,使用这个脚本进行粘贴工作得很好!
相关文章:
- 如何播放部分音频文件
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何使用WCF服务和javascript表单post上传.doc文件
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 正在SharePoint 2013母版页中添加JQuery移动文件
- 如何在php文件中获取$.post-ajax传递的值
- 直接下载文件,而不是从window.open(url)
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用压缩的JavaScript文件(不是运行时压缩)
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- Javascript运行php文件,然后下载文件
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 我应该如何从xml文件构建一个javascript页面
- 通过Ajax将JavaScript函数传递给PHP文件