[resolvido] Renomear arquivos do multi-upload

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);
			}
		}
	}
}
1 Curtida

Excelente, Rodrigo!!! Obrigado por compartilhar!!!

Concordo Kleyber. Muito mais valioso do que a solução em si foi a atitude de compartilhar. Muito obrigado Rodrigo.

cara… MUITO OBRIGADO MESMO por essa dica… eu to tentando fazer um gerenciador de arquivos pro SC e já estava pra lá de P da vida porque nem conseguir listar no iframe eu estava conseguindo…

Vi agora que o problema foi no raio do caminho completo. sua dica de colocar ele em um parâmetro de banco de dados foi excelente… passei umas duas horas quebrando a cabeça aqui até que vi seu post. A gente que é iniciante esbarra nesses problemas bestas com o SC mesmo…

Vlw brow!