Jump to content


Photo

Inserir Ano No Nome De Arquivo.


  • Faça o login para participar
12 replies to this topic

#1 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 19/09/2007, 22:30

Olá pessoal!
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 Andreia Regina

Andreia Regina

    Veterano

  • Conselheiros
  • 1347 posts
  • Sexo:Feminino
  • Localidade:PR
  • Interesses:PHP; MySQL; Javascript; CSS; tudo ligado ao desenvolvimento web.

Posted 25/09/2007, 11:10

para incluir o ano no arquivo
$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 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 25/09/2007, 19:15

Que bom que alguém respondeu! :D

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!

#4 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 25/09/2007, 19:42

http://forum.wmonlin...&...st&p=870071

(y)Até mais

#5 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 25/09/2007, 22:48

E aí Grab! Dando uma mãozinha de novo! :D
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. :D Onde podeira colocar o código para renomear e deletar o arquivo original após renomear?
Há, eu tb acho que esse código que tenho é meio "cachorro", não é? :rolleyes:

[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 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 25/09/2007, 23:51

cara... vc tem que levar em consideração a lógica para entender o que fazer pára resolver qualquer parada em qualquer script... e claro conhecer a sintaxe.

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.

(y)Até mais

#7 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 26/09/2007, 08:44

Vlw mais uma vez pela força cara! (y)

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! :( Mas é a minha área! :)


Vamu lá...

Vou olhar direito o q mandou!
Vlw!

#8 Andreia Regina

Andreia Regina

    Veterano

  • Conselheiros
  • 1347 posts
  • Sexo:Feminino
  • Localidade:PR
  • Interesses:PHP; MySQL; Javascript; CSS; tudo ligado ao desenvolvimento web.

Posted 26/09/2007, 09:34

Que bom que alguém respondeu! :D

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!

Que bom que pude ajudar!

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 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 26/09/2007, 09:43

Cara consegui!!!!
Renomeie com md5 ou com a data, no caso o ano. Tudo belezinha. Só tem um porém :assobio: Tinha q ter alguma coisa! :rolleyes: Quando o arquivo sobe com o novo nome para o servidor, ele tb salva o arquivo na pasta /tmp. Tem como deletá-lo da pasta tmp depois q subir???

vlw


Andreia,
não quero ser preguiçoso :rolleyes: sei se procurar vou achar , mas tem como postar o código para pegar a data completa e as horas com os segundos? :)

#10 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 26/09/2007, 13:47

tenta unlink()

Apesar de eu achar que no /tmp nem precisa apagar :unsure:

(y)

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()

(y)Até mais

#11 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 26/09/2007, 20:20

Blza! Já achei a data e a hora completa. Tb funcionou. Entendi como funciona a lógica e agora posso fazer o que quiser com o arquivo do upload! Abri a mente! :)

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. :D

Vlw Crab!

#12 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 26/09/2007, 21:08

Absorva tudo que poder deste tópico...

http://forum.wmonlin...howtopic=154400

(y)Até mais

#13 incrivelbr

incrivelbr

    Novato no fórum

  • Usuários
  • 19 posts
  • Sexo:Não informado

Posted 27/09/2007, 20:28

Absorva tudo que poder deste tópico...

http://forum.wmonlin...howtopic=154400

(y)


Fala sério! :wacko: O tópico que me passou pelo link é muito bom. É além do q precisava. Mostra a "raiz" do problema mesmo. Nem tinha pensado nesse lance de arquivo alterado ser uploado. Bom, amanhã com a cuca fresca vou tirar o que preciso, pelo que li, rapidamente, atende a qualquer nível de segurança! :) E me alertou para uma coisa, tenho que ver como está a segurança dos sistemas que tenho aq em PHP. Apesar de que, rodam em uma extranet, mas nunca se sabe...

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 (y)

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)

IPB Skin By Virteq