2015-08-03 2 views
8

Могу ли я предположить, что данные изображения в буфере обмена Mac OS X - png?Как определить MIME-тип скопированного в буфер обмена изображений?

Когда я пытаюсь MIME-обнаружить данные буфера обмена, он возвращает application/octet.

Это оказывает нежелательное влияние на то, чтобы каждый браузер загружал изображение, а не отображал его.

Если я заставляю контент-тип изображать/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.

ответ

1

По крайней мере, теоретически, нет, вы не можете этого принять.

Вот что говорит яблоко: «Чтобы получить список типов, доступных в настоящее время в буфере обмена, вы можете использовать свойство types объекта clipboardData. Это свойство содержит массив строк с типами MIME доступных данных. " Webkit DOM Programming Topics

At least according to w3c варианта:

  • изображения/PNG
  • изображения/JPG
  • изображения/JPEG
  • изображения/GIF
  • изображение/SVG + XML

Редактировать:

Причины MIME-обнаружение возвращает 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 объясняет более подробно, как бороться с этим " произвольные двоичные данные ".