【问题标题】:How to determine MIME type of copy-pasted image clipboard?如何确定复制粘贴图像剪贴板的 MIME 类型?
【发布时间】:2015-10-25 18:06:42
【问题描述】:

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

【问题讨论】:

    标签: javascript macos browser mime


    【解决方案1】:

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

    这是苹果所说的:“要获取剪贴板上当前可用的类型列表,您可以使用 clipboardData 对象的 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 更详细地解释了如何处理这种“任意二进制数据”。

    【讨论】:

      猜你喜欢
      • 2013-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 2010-10-04
      相关资源
      最近更新 更多