我可以假定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类型。

最佳答案

至少从理论上讲,不,您不能假设这一点。
苹果说的是:“要获取剪贴板上当前可用的类型的列表,可以使用剪贴板数据对象的types属性。此属性包含具有可用数据的MIME类型的字符串数组。” Webkit DOM Programming Topics
At least according to w3c选项是:

  • 图片/png
  • 图片/jpg
  • 图片/jpeg
  • 图片/gif
  • 图片/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/

    10-12 00:02
    查看更多