
Inserir Ano No Nome De Arquivo.
#1
Posted 19/09/2007, 22:30
Bom, tenho um sistema de visualização de arquivos no formato PDF, em que o usuário cadastrado, de acordo com o seu nível, adiciona os arquivos para a visualização na Intranet da empresa e os editam conforme o caso.
A ajuda seria o seguinte: queria adicionar o ano no nome do arquivo PDF que o usuário "upar". Por exemplo:
arquivo.pdf -> 2007_arquivo.pdf (sobe para o servidor com esse nome).
A idéia é para que os usuários não adicionem arquivos com o mesmo nome e sobrescrevam um dos outros, entende? Nos testes isso está acontecendo.
Encontrei no fórum funções que geram códigos aleatórios, até serveria, mas os códigos não poderiam se repetir, pois "sobem" aqui para o Servidor cerca de 1000 arquivos/mês. Apesar d q, no meu caso, subir com o ano seria melhor para administrar.
Se alguém poder dar uma luz, agradeço desde já!
Vlw!
#2
Posted 25/09/2007, 11:10
$ano = date(Y); //após pegar o nome do arquivo: $arquivo = $ano.$arquivo_do_usuario;
Vc utiliza um id para cada usuário? poderia inserir o id também, alguns utilizam pegar o ano, mês, dia, hora, minuto e segundo do upload.
Fórum WMO - Conselheira - Na equipe desde 31/01/2006.
Links importantes: Regras de conduta - Busca do fórum
#3
Posted 25/09/2007, 19:15

Utilizamos sim um id para cada usuário, mas não seria intressante colocá-lo pq o ambiente é corporativo e os arquivos são de propiedade da empresa e blá, blá... meu chefe não concordou.

Acho que a sua idéia de colocar a data e a hora completa no momento do upload cai como uma luva, é tanta coisa que nem tinha pensado nisso. Queria, então, renomear os arquivos para a data e hora. Vc poderia me dar uma luz???

Desde já agradeço a sua ajuda!
#4
Posted 25/09/2007, 19:42
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#5
Posted 25/09/2007, 22:48

Bom, já tinha visto esse link q vc enviou, foi assim q consegui inserir a data ao nome do arquivo, só q depois tentei renomear, mas não consegui. Achei meio confuso, pois lá usa o "copy" para copiar o arquivo para o servidor. Como respondi para Andreia, estava querendo colocar data e hora. Olha vou deixar o código do meu upload aqui para vcs darem uma olhada. Tá sem as "gambiarras" que tinha colocado.

Há, eu tb acho que esse código que tenho é meio "cachorro", não é?

[codebox]<?php
require("variaveis.inc");
require_once ("funcoes.php");
$data_titulo_bd=Date2S($data_titulo); // Transforma de dd/mm/aaaa para aaaa/mm/dd
$sql="select * from ordem where data_titulo='$data_titulo_bd' && titulo='$titulo'";
$executa=mysql_query($sql);
$encontrados=mysql_num_rows($executa);
$resultado=mysql_fetch_array($executa);
if ($encontrados>0)
{
print "<center><strong><font color='#CC0000' bgcolor='#C0C0C0'><strong>Título Já Cadastrado!!!</strong>";
exit;
}
if ($data_titulo=="") //verifica se o campo data_titulo está preenchido
{
print "<center><strong><font color='#CC0000' bgcolor='#C0C0C0'><strong>Preencha o campo DATA do TÍTULO!!!</strong>";
exit;
}
if ($titulo=="") //verifica de o campo titulo está preenchido
{
print "<center><strong><font color='#CC0000' bgcolor='#C0C0C0'><strong>Preencha o campo TÍTULO!!!</strong>";
exit;
}
if ($arquivo=="") //verifica de o campo arquivo está preenchido
{
print "<center><strong><font color='#CC0000' bgcolor='#C0C0C0'><strong>Preencha o campo ARQUIVO!!!</strong>";
exit;
}
$tipo_ordem = "IND";
$destinotxt="/var/www/ordens/arquivos/ind/";
$dest = $destinotxt.$arquivo_name;
// MOVE_UPLOADED_FILE: Esta função checa para ter certeza que o arquivo
// designado por $file é um arquivo válido uploadeado (significando que
// ele foi uploadeado pelo mecanismo do PHP de HTTP POST). Se o arquivo
// for válido, ele será movido para o $dest dado pelo destino.
// Executa o comando do upload no servidor
if(!move_uploaded_file($arquivo, $dest))
{
print "<center><font face=\"arial\" size=4 color=\"red\"><b>Não foi possível fazer upload! Arquivo inválido ou arquivo muito grande.</b></font></center>";
}
else
{
$sql="INSERT INTO ordem (titulo,data_titulo,arquivo,tipo_ordem) values
('$titulo',
'$data_titulo_bd',
'$arquivo_name',
'$tipo_ordem')";
$executa=mysql_query($sql);
if($executa)
print "<center><font face=\"arial\" size=4 color=\"red\"><b>Parabens!!! Inclusão Efetuada com Sucesso!!!</b></font></center>";
else
print "<center><font face=\"arial\" size=4 color=\"red\"><b>Falha na Inclusão!!!</b></font></center>";
}
?>
[/codebox]
Vlw!
#6
Posted 25/09/2007, 23:51
Vou tentar dar uma força...
Aquilo que tem nauqele link que te passei é o que vc tem que fazer antes do move_uploaded_file()
exemplo:
$Arq = $_FILES['arquivo']; $tmp = $Arq['tmp_name']; $nome = $Arq['name']; $destinotxt="/var/www/ordens/arquivos/ind/"; $get_ext = pathinfo($nome); $ext = $get_ext["extension"]; $novo_nome = md5(uniqid(time())).".".strtolower($ext); if(move_uploaded_file($tmp, $destinotxt.$novo_nome)){ echo "ok"; } else{ echo "erro"; }
Mais ou menos isso... mas aconselho ler... e depois ler mais um pouco e durante a leitura... exercitar... e depois exercitar mais um pouco... só aí passará a entender mais um pouco.

canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#7
Posted 26/09/2007, 08:44

Algumas coisas não consigo encontrar a lógica, pq tentar aprender programação na pressão é brabo! Além do PHP tenho q fazer manutenção num sistema que é em ASP. Portanto, algumas vezes confundo os códigos. Pra piorar tenho que migrar os servidores Windows p/ Linux até dezembro!


Vamu lá...
Vou olhar direito o q mandou!
Vlw!
#8
Posted 26/09/2007, 09:34
Que bom que pude ajudar!Que bom que alguém respondeu!
![]()
Utilizamos sim um id para cada usuário, mas não seria intressante colocá-lo pq o ambiente é corporativo e os arquivos são de propiedade da empresa e blá, blá... meu chefe não concordou.A pessoa que fez o programa foi demitida e fiquei com encargo de dar continuidade, acumulando com minha função atual, sou administrador. Portanto, to apanhando para aprender, pois temos três sistemas em PHP.
Acho que a sua idéia de colocar a data e a hora completa no momento do upload cai como uma luva, é tanta coisa que nem tinha pensado nisso. Queria, então, renomear os arquivos para a data e hora. Vc poderia me dar uma luz???Ainda estou meio confuso com tanto código. Consegui até inserir a data no nome do arquivo, mas queria renomear o arquivo mesmo.
Desde já agradeço a sua ajuda!
O pessoal não havia respondido antes porque o tópico estava na sala de Dúvidas sobre Scripts Prontos de PHP

Caso não consiga volte a postar!
Fórum WMO - Conselheira - Na equipe desde 31/01/2006.
Links importantes: Regras de conduta - Busca do fórum
#9
Posted 26/09/2007, 09:43
Renomeie com md5 ou com a data, no caso o ano. Tudo belezinha. Só tem um porém


vlw
Andreia,
não quero ser preguiçoso


#10
Posted 26/09/2007, 13:47
Apesar de eu achar que no /tmp nem precisa apagar


para saber mais sobre datas leia:
date()
Aliás para saber qualquer coisa de PHP recomendo uma estudada desde o início nisso aqui:
Manual()
Mas antes leia isto:
Apostila Básica()

canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#11
Posted 26/09/2007, 20:20

Tb achava que tudo q vai na pasta tmp (do PHP) era para apagar, mas não tá acontecendo, já usei o unlink de diversos modos e não deu certo. To achando que é algo com o sistema, vou investigar isso. O importante é que com a ajuda de vcs consegui evoluir no código. Vlw!
Meu próximo passo agora é tentar controlar que tipo de arquivo (extensão) pode ser uploado, já tentei algumas coisas, mas nada satisfatório. Vou tentar resolver sem perguntar.

Vlw Crab!
#12
Posted 26/09/2007, 21:08
canaldev.com.br
sistemabasico.com.br
twitter.com/sistemabasico
twitter.com/lunelli
#13
Posted 27/09/2007, 20:28
Absorva tudo que poder deste tópico...
http://forum.wmonlin...howtopic=154400
Fala sério!


Vlw d novo!
Opa! Consegui filtrar a extensão de arquivo com o link passado acima. Peguei o código mais simples. Só fiz uma pequena modificação para aceitar somente arquivos no formato PDF, veja abaixo:
$type = $_FILES['img']['type']; if(!eregi("^image\/(pjpeg|jpeg|png)$", $type))print "( {$type} ) - Não permitimos o envio deste tipo de arquivo aqui."else// todo o processo restante ...
Mudei para isso:
$type = $_FILES['img']['type']; if(!eregi("^application\/pdf$", $type))print "( {$type} ) - Não é permitido o envio deste tipo de arquivo aqui. Somente arquivos PDF são permitidos."else// todo o processo restante ...
Vlw Crab

Edição feita por: incrivelbr, 27/09/2007, 20:32.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)