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

Javascript 如何确定复制粘贴图像剪贴板的MIME类型?,javascript,macos,browser,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.lengt

我可以假设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(), {});
...
$log.debug(例如originalEvent.clipboardData);
对于(var i=0;i

我用它来检测MIME类型。

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

以下是apple所说的:“要获得剪贴板上当前可用类型的列表,可以使用clipboardData对象的types属性。该属性包含一个字符串数组,其中包含可用数据的MIME类型。”

这些选择包括:

  • 图像/png
  • 图片/jpg
  • 图像/jpeg
  • 图像/gif
  • image/svg+xml
编辑:

MIME detect返回
application/octet
的原因是,您使用的库在不知道类型时会返回到该库:

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

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