Autor Tópico: [RESOLVIDO]Mudar nome do arquivo antes do upload  (Lida 3464 vezes)

mrcgomes

  • Intermediário
  • ***
  • Mensagens: 220
    • Email
[RESOLVIDO]Mudar nome do arquivo antes do upload
« Online: Agosto 12, 2014, 06:59:54 am »
Olá, bom dia.

Eu preciso mudar o nome do arquivo durante o upload do arquivo para o servidor

Eu utilizo o tipo (Domumento - Nome do arquivo). Alguém sabe como fazer a troca do nome antes do upload, para que o arquivo chegue no servidor com o nome que eu desejar?

Abraços
Marcelo
« Última modificação: Agosto 14, 2014, 11:40:12 am por mrcgomes »

Haroldo

  • Expert
  • *****
  • Mensagens: 6262
  • Conhecimento diminui limitações.△TFA△
    • Infinitus Web Gestão Empresarial/Gestão ITIL/Consultoria Scriptcase
Re:Mudar nome do arquivo antes do upload
« Responder #1 Online: Agosto 12, 2014, 01:36:56 pm »
somente depois do upload, vc pode renomear o mesmo no evento onvalidatesucess ou onvalidate.

mrcgomes

  • Intermediário
  • ***
  • Mensagens: 220
    • Email
Re:Mudar nome do arquivo antes do upload
« Responder #2 Online: Agosto 14, 2014, 11:39:52 am »
Blz
Funcionou.
Valeu!

mrcgomes

  • Intermediário
  • ***
  • Mensagens: 220
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #3 Online: Setembro 02, 2014, 05:25:27 am »
Bom dia.
Adicionando o que fiz para resolver o problema:

no evento onScriptInit eu recuperei o diretório onde o arquivo seria armazenado com
Código: [Selecionar]
$dir_app = $_SESSION['scriptcase']['app_form_tbl_documentos']['glo_nm_path_doc']."/";

Método usado para retirar os acentos
Código: [Selecionar]
/*
 * Método responsável por retirar letras acentuadas
 * @author Marcelo Gomes (MGSistemas - marcelo.gomes@mgsistemas.com.br)
 * @copyright 2014 - MG Consultoria em Informática
 * @param str - string a ser convertida
 * return str - string convertida
 */

function mg_utils_retiraAcento($str)
{
   $str = str_replace("á","a",$str);
   $str = str_replace("Á","a",$str);
   $str = str_replace("é","e",$str);
   $str = str_replace("É","e",$str);
   $str = str_replace("ç","c",$str);
   $str = str_replace("Ç","c",$str);
   $str = str_replace("ã","a",$str);
   $str = str_replace("Ã","a",$str);
   $str = str_replace("õ","o",$str);
   $str = str_replace("Õ","o",$str);
   $str = str_replace("ê","e",$str);
   $str = str_replace("Ê","e",$str);
   $str = str_replace("ú","u",$str);
   $str = str_replace("Ú","u",$str);
   $str = str_replace("ó","o",$str);
   $str = str_replace("Ó","o",$str);
   $str = str_replace("í","i",$str);
   $str = str_replace("â","a",$str);
   $str = str_replace("Â","a",$str);
   $str = str_replace("Í","i",$str);
   return $str;
}

No evento onValidadeSucess, implementei o seguinte código que será executado antes do update, assim o arquivo que será submetido ao diretório e ao upload já vai com o nome trocado e ajustado.
Código: [Selecionar]
{url_documento} = str_replace(" ","",{url_documento});    // Retira todos os espaços em branco
{url_documento} = mg_utils_retiraAcento({url_documento}); // Utiliza o método para retirar os caracteres acentuados

ariltavares

  • Novato
  • *
  • Mensagens: 16
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #4 Online: Setembro 08, 2014, 04:50:06 pm »
Bom dia.
Adicionando o que fiz para resolver o problema:

no evento onScriptInit eu recuperei o diretório onde o arquivo seria armazenado com
Código: [Selecionar]
$dir_app = $_SESSION['scriptcase']['app_form_tbl_documentos']['glo_nm_path_doc']."/";

Método usado para retirar os acentos
Código: [Selecionar]
/*
 * Método responsável por retirar letras acentuadas
 * @author Marcelo Gomes (MGSistemas - marcelo.gomes@mgsistemas.com.br)
 * @copyright 2014 - MG Consultoria em Informática
 * @param str - string a ser convertida
 * return str - string convertida
 */

function mg_utils_retiraAcento($str)
{
   $str = str_replace("á","a",$str);
   $str = str_replace("Á","a",$str);
   $str = str_replace("é","e",$str);
   $str = str_replace("É","e",$str);
   $str = str_replace("ç","c",$str);
   $str = str_replace("Ç","c",$str);
   $str = str_replace("ã","a",$str);
   $str = str_replace("Ã","a",$str);
   $str = str_replace("õ","o",$str);
   $str = str_replace("Õ","o",$str);
   $str = str_replace("ê","e",$str);
   $str = str_replace("Ê","e",$str);
   $str = str_replace("ú","u",$str);
   $str = str_replace("Ú","u",$str);
   $str = str_replace("ó","o",$str);
   $str = str_replace("Ó","o",$str);
   $str = str_replace("í","i",$str);
   $str = str_replace("â","a",$str);
   $str = str_replace("Â","a",$str);
   $str = str_replace("Í","i",$str);
   return $str;
}

No evento onValidadeSucess, implementei o seguinte código que será executado antes do update, assim o arquivo que será submetido ao diretório e ao upload já vai com o nome trocado e ajustado.
Código: [Selecionar]
{url_documento} = str_replace(" ","",{url_documento});    // Retira todos os espaços em branco
{url_documento} = mg_utils_retiraAcento({url_documento}); // Utiliza o método para retirar os caracteres acentuados

Cara muito bom, parabéns!

Luiz Baião

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #5 Online: Novembro 11, 2014, 10:58:38 am »
Pessoal também estou com este problema, estou precisando renomear o arquivo que está sendo enviado via FTP.

No meu caso por precaução estou usando o tipo de campo: Documento (Banco de Dados).

Alguém tem alguma dica?
Como eu adiciono anexo aqui para que seja avaliado?

http://crm.bhsoft.com.br/exames/renomear_arquivo_upload.pdf
« Última modificação: Novembro 11, 2014, 11:09:31 am por Luiz Baião »

mrcgomes

  • Intermediário
  • ***
  • Mensagens: 220
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #6 Online: Novembro 11, 2014, 11:02:31 am »
Luiz
A dica que deixei serve para esta situação também.
É só seguí-la.

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #7 Online: Novembro 11, 2014, 04:47:21 pm »
Olá caso queira uma função bem eficaz e com menos linhas para acento, garanto que não passa nada, kkkkk, segue:

Código: [Selecionar]
function removerAcento($str)
{
     $a = array('À','Á','Â','Ã','Ä','Å','Æ','Ç','È','É','Ê','Ë','Ì','Í','Î','Ï','Ð','Ñ','Ò','Ó','Ô','Õ','Ö','Ø','Ù','Ú','Û','Ü','Ý','ß','à','á','â','ã','ä','å','æ','ç','è','é','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','õ','ö','ø','ù','ú','û','ü','ý','ÿ','Ā','ā','Ă','ă','Ą','ą','Ć','ć','Ĉ','ĉ','Ċ','ċ','Č','č','Ď','ď','Đ','đ','Ē','ē','Ĕ','ĕ','Ė','ė','Ę','ę','Ě','ě','Ĝ','ĝ','Ğ','ğ','Ġ','ġ','Ģ','ģ','Ĥ','ĥ','Ħ','ħ','Ĩ','ĩ','Ī','ī','Ĭ','ĭ','Į','į','İ','ı','IJ','ij','Ĵ','ĵ','Ķ','ķ','Ĺ','ĺ','Ļ','ļ','Ľ','ľ','Ŀ','ŀ','Ł','ł','Ń','ń','Ņ','ņ','Ň','ň','ʼn','Ō','ō','Ŏ','ŏ','Ő','ő','Œ','œ','Ŕ','ŕ','Ŗ','ŗ','Ř','ř','Ś','ś','Ŝ','ŝ','Ş','ş','Š','š','Ţ','ţ','Ť','ť','Ŧ','ŧ','Ũ','ũ','Ū','ū','Ŭ','ŭ','Ů','ů','Ű','ű','Ų','ų','Ŵ','ŵ','Ŷ','ŷ','Ÿ','Ź','ź','Ż','ż','Ž','ž','ſ','ƒ','Ơ','ơ','Ư','ư','Ǎ','ǎ','Ǐ','ǐ','Ǒ','ǒ','Ǔ','ǔ','Ǖ','ǖ','Ǘ','ǘ','Ǚ','ǚ','Ǜ','ǜ','Ǻ','ǻ','Ǽ','ǽ','Ǿ','ǿ',' ','/','(',')','.');
     $b = array('a','a','a','a','a','a','ae','c','e','e','e','e','i','i','i','i','d','n','o','o','o','o','o','o','u','u','u','u','y','s','a','a','a','a','a','a','ae','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y','a','a','a','a','a','a','c','c','c','c','c','c','c','c','d','d','d','d','e','e','e','e','e','e','e','e','e','e','g','g','g','g','g','g','g','g','h','h','h','h','i','i','i','i','i','i','i','i','i','i','ij','ij','j','j','k','k','l','l','l','l','l','l','l','l','l','l','n','n','n','n','n','n','n','o','o','o','o','o','o','oe','oe','r','r','r','r','r','r','s','s','s','s','s','s','s','s','t','t','t','t','t','t','u','u','u','u','u','u','u','u','u','u','u','u','w','w','y','y','y','z','z','z','z','z','z','s','f','o','o','u','u','a','a','i','i','o','o','u','u','u','u','u','u','u','u','u','u','a','a','ae','ae','o','o','-','/','','','-');   
     return strtolower(str_replace($a, $b, $str));
}


Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #8 Online: Novembro 11, 2014, 04:50:02 pm »
Apenas para complementar, alguns caracteres devem ser trocados. Exemplo está trocando . por -
e isso para upload não vai ser bom....
tirem a última string...

Luiz Baião

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #9 Online: Abril 17, 2015, 10:37:33 am »
Pessoal, alguém sabe me dizer se isto funciona para campos MULTI-UPLOAD?

Luiz Baião

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #10 Online: Abril 17, 2015, 11:14:52 am »
Pessoal mais uma pergunta.

Depois de executar essas modificações,  está aparecendo a mensagem de erro: Undefined variable: sKeepImage

Alguém tem alguma sugestão?

claudiogsjr

  • Novato
  • *
  • Mensagens: 5
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #11 Online: Julho 03, 2015, 10:43:30 am »
Bom dia, estou tendo problemas para fazer renomear o arquivo. A função acima funcionou perfeitamente para renomear ao salvar no banco, porém o arquivo que é salvo fisicamente no servidor continua com o nome original, com espaços e acentos.

Faltou algo na orientação acima para que funcione corretamente?

Obrigado

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #12 Online: Julho 03, 2015, 11:00:19 am »
O arquivo físico deve ser renomeado pelo comando rename, rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao");
Pode ser usado no mesmo método que renomeia no bd, eu prefiro fazer com if para garantir que irá renomear os 2, exemplo:
if(rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao"))
{
    aqui a query para atualizar o arquivo no bd.
}

Jocimar

  • Expert
  • *****
  • Mensagens: 618
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #13 Online: Julho 13, 2015, 04:46:43 pm »
O arquivo físico deve ser renomeado pelo comando rename, rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao");
Pode ser usado no mesmo método que renomeia no bd, eu prefiro fazer com if para garantir que irá renomear os 2, exemplo:
if(rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao"))
{
    aqui a query para atualizar o arquivo no bd.
}

Para arquivos físicos, se apagar pelo SC também tenho que excluir "manualmente" no evento onAfterDelete, o SC só apaga o nome do arquivo do BD, ou existe alguma configuração para que o arquivo físico seja eliminado do disco ?
Jocimar de Oliveira

Rodrigo Goulart Padovezzi

  • Expert
  • *****
  • Mensagens: 1045
    • Email
Re:[RESOLVIDO]Mudar nome do arquivo antes do upload
« Responder #14 Online: Julho 13, 2015, 05:37:51 pm »
O arquivo físico deve ser renomeado pelo comando rename, rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao");
Pode ser usado no mesmo método que renomeia no bd, eu prefiro fazer com if para garantir que irá renomear os 2, exemplo:
if(rename("caminho-completo/diretorio/arquivo-ori.extensao","caminho-completo/diretorio/nome-novo.extensao"))
{
    aqui a query para atualizar o arquivo no bd.
}

Para arquivos físicos, se apagar pelo SC também tenho que excluir "manualmente" no evento onAfterDelete, o SC só apaga o nome do arquivo do BD, ou existe alguma configuração para que o arquivo físico seja eliminado do disco ?

unlink("caminho-completo/diretorio/nome-novo.extensao");