parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Nconvert и определение формата файла

4ept 11.08.2008 09:13

Казалось бы, обычная ситуация:
1) Аплоад файлов на сервер во временный файл
2) Определение формата
3) Если формат подошел - ресайз и сохранение, иначе - удаление временного файла
Определение формата делаю так:
Есть класс, в коде которого присутствует такое:
@upload[photo]
^if($photo && $photo is "file"){ #мало ли, вдруг не файл
	#генерим имя файлу: id_пользователя-мд5(текущая дата)
	$uploaded_file[filenameXXX] 
	#место для записи временного файла
	$temp_file[${IMGTEMP}${uploaded_file}]
	^photo.save[binary;$temp_file]
	$img[^NConvert::create[
	#Путь, где лежит nconvert
	$.sScriptPath[$NCONVERTPATH]
	#Имя самого файла nconvert
	$.sScriptName[$NCONVERT]
	]]
	^if(Iinit[$temp_file]){
		#ресайзим и сохраняем
		^Isave[]
	}{
		#удаляем временный файл
		^Idelete[]
	}
}
#end @upload[]

########################################
# с его помощью определяем формат
@Iinit[tmp][_img]
$_img[^img.info[$tmp]]

^switch[$_img.sFormat]{
	^case[jpeg]{
		$self.ext[jpg]
	}
	^case[jpg]{
		$self.ext[jpg]
	}
	^case[gif]{
		$self.ext[gif]
	}
	^case[png]{
		$self.ext[png]
	}
	^case[DEFAULT]{
		$error_code[1]
		$result[0]
	}
}
#end @init[]
На локальной машине с денвером работает.
На сервере с Linux выдает ошибку:
'info' Unknown image format '/temp/filenameXXX'
Или я что-то не так делаю, или Nconvert под Linux определяет формат файла не по содержимому, а по расширению.


P.S.
Класс images.p отсюда: http://www.spearance.ru/parser3/pictures/source/
по некоторым причинам не подходит.