| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
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]]
}Что это такое? Пришедшие файлы из формы мы аккуратненько сохраняем на диск, и по первому требованию отдаем и затираем. Что-то типа временного хранилища. Почти хешфайл ). поставленная задача решена полностью.