javascript - 为什么粘贴事件 getAsFile 为非图像文件返回 null?
问题描述
下面的代码片段显示了一个演示来处理文档上的粘贴事件,显示粘贴的项目信息
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<h3>Paste file</h3>
<div id="out">
</div>
<script>
var $log = window.out;
function log(s) {
$log.innerHTML += `<div>${s}</div>`
}
document.addEventListener('paste', function (e) {
const data = (e.originalEvent || e).clipboardData;
log(`Text ${data.getData('text')}`);
Array.from(data.items)
.forEach((item, i) => {
let file = item.getAsFile() || {};
console.log(item.getAsFile())
log(`Item[${i}] type=${item.type} kind=${item.kind} getAsFile=${item.getAsFile()} file.name=${file.name} file.type=${file.type} file.size=${file.size}`);
})
})
</script>
</body>
</html>
但是只能获取图像文件,而且文件类型不正确,image/png
即使我粘贴jpg文件也总是返回。
当我粘贴一些其他类型的文件时,例如hello.txt
,getAsFile
将返回null
,我该如何处理其他类型的粘贴文件?
我在macos chrome 79.0.3945.130下的日志是这样的
Text back.jpg
Item[0] type=text/plain kind=string getAsFile=null file.name=undefined file.type=undefined file.size=undefined
Item[1] type=image/png kind=file getAsFile=[object File] file.name=image.png file.type=image/png file.size=6232743
Text hello.txt
Item[0] type=text/plain kind=string getAsFile=null file.name=undefined file.type=undefined file.size=undefined
Item[1] type=image/png kind=file getAsFile=null file.name=undefined file.type=undefined file.size=undefined
解决方案
推荐阅读
- python - 函数 "say" 抛出 AttributeError: 'str' object has no attribute 'channel' 错误
- android - 更改 org.gradle.jvmargs 的值可修复“此问题可能是由守护程序配置不正确引起的”。错误
- python - 程序通过除最后一个以外的所有其他测试用例。如何修复最后一个测试用例?
- javascript - 如何创建只有 1 个系列数据的饼图,背景为圆形
- c++ - 地图允许重复?
- c# - 如何使用 C# .net 中的 HDF5DotNet 读取 HDF5 多维数组数据集?
- angle - 如何将四元数值转换为特定角度
- shell - 如何在不以spark开头的spark提交中传递参数
- websphere - websphere 应用程序服务器配置文件
- excel - Excel-Vlookup:重复查找值+为相似查找值添加列值