2015-08-03 35 views
8

Czy mogę założyć, że dane obrazu schowka w Mac OS X to png?Jak określić typ MIME schowka wklejanego do kopiowania?

Kiedy próbuję wykryć dane schowka przez MIME, zwraca ono application/octet.

Ma to niepożądany wpływ na to, że każda przeglądarka pobierze obraz zamiast go wyświetlić.

Jeśli wymuszam typ zawartości na image/png, wszystko wydaje się w porządku, ale zastanawiałem się, czy jest jakiś sposób, aby nie musieć przyjąć założenia?

$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(), {}); 
... 

Używam https://github.com/broofa/node-mime do wykrywania typów MIME.

Odpowiedz

1

Przynajmniej w teorii, nie, nie możesz tego założyć.

Oto, co jabłko mówi: "Aby uzyskać listę typów dostępnych obecnie w schowku, można użyć właściwości types obiektu clipboardData Ta właściwość zawiera tablicę ciągów z typami MIME dostępnych danych. " Webkit DOM Programming Topics

At least according to w3c opcje to:

  • image/png
  • image/jpg
  • image/jpeg
  • image/gif
  • image/svg + xml

edycja:

Powodem MIME wykryć Przywraca application/octet to, że biblioteka używasz wraca do tego, gdy nie zna typu as you can see in this line of the test.js file:

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

This answer bardziej szczegółowo wyjaśnia, jak radzić sobie z tym " dowolne dane binarne. "