Показать сообщение отдельно
Старый 13.07.2017, 13:22
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 6  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Никак не определить.Это может быть json, у которого первые n байт совпадают с хидером джипега.
Очень маловероятно.
Вот к примеру (это класс из утилит Dragon Bones), как можно отпределить типы картинок и zip. Мне нужен был зип, и я добавил туда байты зипа из спецификации. То же самое можно сделать и для других типов файлов. Достаточно найти спецификацию типа и посмотреть что у него пишется в хэдэр.
Код AS3:
package 
{
	import flash.utils.ByteArray;
 
 
	public class BytesType
	{
		public static const SWF:String = "swf";
		public static const PNG:String = "png";
		public static const JPG:String = "jpg";
		public static const ATF:String = "atf";
		public static const ZIP:String = "zip";
 
		public static function getType(bytes:ByteArray):String
		{
			var type:String;
			var b1:uint = bytes[0];
			var b2:uint = bytes[1];
			var b3:uint = bytes[2];
			var b4:uint = bytes[3];
			if ((b1 == 0x46 || b1 == 0x43 || b1 == 0x5A) && b2 == 0x57 && b3 == 0x53)
			{
				//CWS FWS ZWS
				type = SWF;
			}
			else if (b1 == 0x89 && b2 == 0x50 && b3 == 0x4E && b4 == 0x47)
			{
				//89 50 4e 47 0d 0a 1a 0a
				type = PNG;
			}
			else if (b1 == 0xFF)
			{
				type = JPG;
			}
			else if (b1 == 0x41 && b2 == 0x54 && b3 == 0x46)
			{
				type = ATF;
			}
			else if (b1 == 0x50 && b2 == 0x4B)
			{
				type = ZIP;
			}
			return type;
		}
	}
}
Тебе нужно грузить простым URLLoader'ом с типом BINARY, а потом загруженный байт массив передавать в в этот метод, чтобы определить тип.
Профит.

п.с. Но самый простой способ определить - это просто использовать расширение.
__________________
Ко мне можно и нужно обращаться на ты)