Bom dia pessoal, já vi algumas dúvidas ref. renomear arquivos do multi upload. Como precisei disso acabei achando uma solução. Estou compartilhando caso alguém precise.
Meu campo multi upload gravo com subdiretório
/fotos/album/{id}
onAfterInsert e onAfterUpdate
método
m_php_renomeia();
Método
m_php_renomeia
dica [var_glo_patch_img_full] é uma variável que criei e guardo no bd, se preferir pode substituir pelo caminho correto ou pelas próprias variáveis do SC, deixei dessa maneira pois é como uso. Nesse caso usei o caminho completo do diretório (começando por /scriptcase/… não deu certo, apenas com caminho full)
segue o código, adapte às suas necessidades
$sqlA = "select id, foto from album_itens where doc = {id} ";//selecionando os itens inseridos
sc_lookup(lookupA,$sqlA);
if(!empty({lookupA}))
{
foreach({lookupA} as $a) //percorrendo os resultados
{
$dirF = [var_glo_patch_img_full]."/fotos/album/".{id}."/"; //diretório onde foi feito upload (multi)
if(is_dir($dirF))
{
if($dh = opendir($dirF))
{
while(($fileF = readdir($dh)) !== false)
{
if($fileF==$a[1]) //se o arquivo físico for o mesmo que da tabela
{
//encontrando a extensão do arquivo
$auximg = explode(".",$a[1]);
$auxult = (count($auximg)-1);
$extens = $auximg[$auxult];
//no caso estou renomeando o arquivo pelo id.extensão, se quiser pode usar alguma função de tirar caracteres especiais e renomear da mesma forma.
$arqOri = [var_glo_patch_img_full]."/fotos/album/".{id}."/".$fileF;
$arqFim = [var_glo_patch_img_full]."/fotos/album/".{id}."/".$a[0].".".$extens; //id.extensão
//renomeando, se der falha não atualiza o bd
if(rename($arqOri,$arqFim))
{
//fazendo update na tabela
$sqlU = "update album_itens set foto = '".$a[0].".".$extens."' where id = ".$a[0].";
sc_exec_sql($sqlU);
}
}
}
closedir($dh);
}
}
}
}