parser

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

 

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

если бы...

agat 09.07.2007 17:03

была возможность передать форму прямиком, я б не создавал треда.

Короче, пришлось опять изворачиваться. Итак, имеем
################################################
@makeUri[hParams][hFields]
$hParams[^hash::create[$hParams]]
$hFields[$hParams]
$hFields[^hFields.union[$form:tables]]
$hFields[^hFields.union[$form:fields]]
^if(def $hParams.hExclude && $hParams.hExclude is "hash"){
	^hFields.sub[$hParams.hExclude]
	^hFields.sub[$.hExclude[]]
}
$result[$hParams.targetUrl^if($hFields){?^hFields.foreach[sField;uValue]{^if($uValue is "table"){^uValue.menu{$sField=^taint[uri][$uValue.field]}[&]}{$sField=^taint[uri][^if($uValue is "file"){^getNameFromFile[$uValue]}{$uValue}]}}[&]}]
# end of @makeUri[]

################################################
@getNameFromFile[fFile][sDir;tFile;sFileName]
$sFileName[^makeFileName[$fFile.name]]
$sDir[$DATA_DIR/formData]
^if(-d $sDir){
	$tFile[^file:list[$sDir]]
}
^if($tFile){
	^while(^tFile.locate[name;$sFileName]){
		$sFileName[^makeFileName[$fFile.name]]
	}
}
^fFile.save[binary;$sDir/$sFileName]
$result[$sFileName]
# end of @getFormFileName[]

################################################
@makeFileName[sFileName]
$result[^makeRandomID[].^file:justext[$sFileName]]
# end of @makeFileName[]

################################################
@getFileFromName[sFileName][sDir;tFile]
$sDir[$DATA_DIR/formData]
^if(-d $sDir){
	$tFile[^file:list[$sDir]]
}
^if($tFile && ^tFile.locate[name;$sFileName]){
	$result[^file::load[binary;$sDir/$sFileName]]
	^file:delete[$sDir/$sFileName]
}{
	$result[]
}
# end of @getFileFromName[]
Юзаем примерно так
^if($form:thumb is "file"){
		$fThumb[$form:thumb]
	}{
		$fThumb[^getFileFromName[$form:thumb]]
	}
Что это такое? Пришедшие файлы из формы мы аккуратненько сохраняем на диск, и по первому требованию отдаем и затираем. Что-то типа временного хранилища. Почти хешфайл ). поставленная задача решена полностью.