javascript - 如何确定复制粘贴图像剪贴板的 MIME 类型?

标签 javascript macos browser mime

我可以假设 Mac OS X 剪贴板图像数据是 png 吗?

当我尝试 MIME 检测剪贴板数据时,它返回 application/octet

这会导致每个浏览器都下载图像而不是显示图像。

如果我强制内容类型为 image/png,一切似乎都很好,但我想知道是否有办法让我不必做出假设?

$log.debug(e.originalEvent.clipboardData);
for (var i = 0; i < e.originalEvent.clipboardData.items.length; i++) {
var item = e.originalEvent.clipboardData.items[i];
$log.info("Item type: " ,item);
if (item.type.indexOf("image") != -1) {
    $scope.token.images = [];
    $log.debug(item.getAsFile(), {});
...

我使用 https://github.com/broofa/node-mime检测 MIME 类型。

最佳答案

至少在理论上,不,你不能这样假设。

Apple 是这样说的:“要获取剪贴板上当前可用类型的列表,您可以使用 clipboardData 对象的 types 属性。此属性包含一个字符串数组,其中包含可用数据的 MIME 类型。” Webkit DOM Programming Topics

At least according to w3c选项是:

  • 图片/png
  • 图片/jpg
  • 图片/jpeg
  • 图片/动图
  • 图片/svg+xml

编辑:

MIME-detect 返回 application/octet 的原因是您正在使用的库在不知道类型 as you can see in this line of the test.js file 时回退到那个。 :

assert.equal('fallback', mime.charsets.lookup('application/octet-stream', 'fallback'));

This answer更详细地解释了如何处理这种“任意二进制数据”。

关于javascript - 如何确定复制粘贴图像剪贴板的 MIME 类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31790587/

相关文章:

javascript - 带有正则表达式模式的html5输入类型数字

ios - Swift Network.framework WebSocket 握手 nil 返回

macos - grep -P 不再有效。如何重写我的搜索?

c# - IDocHostUIHandler TranslateAccelerator 不允许键盘输入

javascript - lightSlider 在缩略图旁边显示所有按钮

javascript - 纯 JS 验证在移动设备中始终返回 false

javascript - div 内的 anchor 标记不起作用

python - MacOS stil 指向 python3.6

javascript - 如何将浏览器从加载状态更改为已加载状态?

javascript - 单击时在新窗口中打印图像的最简单方法是什么?