Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Renan F. da Silva

Sistema de Arquivos ( Query, Verificar para exibir arquivos)

Recommended Posts

Fala pessoal,

 

Estou querendo uma orientação para oque eu estou querendo fazer. Pois estou com duvida em algumas coisas, se alguém souber me dar um caminho já está bom :)

 

Basicamente é um Sistema de Arquivos.

Todos os arquivos ficam armazenados no servidor e guardado o nome e sua localização e suas permissões

O usuário faz o login dele e ele vai ter três paginas

  • Os arquivos pessoais dele (os envios dele)
  • Os arquivos dos grupos que ele pertence
  • Uma pagina para ele enviar um arquivo para o grupo ou para uma pessoa especifica do grupos que ele pertence
Nessa parte eu encontrei o problema de não conseguir achar uma solução é

Exemplo possuo o arquivo 589 no banco.
ID  | Nome     | Arquivo    | Dir | Criado     | Visualizado | Permição
-------------------------------------------------------------------------------------
589 | Material | 586549.zip | 785 | 31/01/2015 | 3895        | Turma01-Turma02-Turma03


No lugar das turmas01 são os id, que no php eu trago outras informaçoes sobre aquela turma.

A duvida aqui é o Usuario27 que é da Turma02

Como eu faço o WHERE na query de um jeito que o arquivo 589 seja exibido.
Pois se eu utilizar o WHERE = Turma02 ele não me retorna nada.


Quando o usuario abre um arquivo ele é mandado para uma tela
  • Verifica se ele está logado
  • Verifica se ele tem a permição para aquele aquivo (como anteriormente eu disse essa parte não estou conseguinto fazer a query corretamente)
Para arquivos de IMAGENS e TEXTOS

->Ele as exibe, mostrando até uma caixa com comentários de outros usuário que também tem acesso aquele arquivo

 

Para arquivos PDFs zip, (os que o navegador não consegue visualizar ele mostra um botão para dowload.

Essa é a minha maior duvida, pois não sei se isso é possível

->Ter um arquivo php que ele ira abrir os arquivos/exibi-los

Porque isso?
Para esconder o verdadeiro local do arquivo, e nesse arquivo possibilitaria uma nova verificação, vendo se a pessoa pode ou não ver ou obter o arquivo
Pode não ter nada ve mais em um dos varios testes que realizei eu usei o timthumb.php(uma biblioteca de redimensionante de imagens)

informando no arquivo mesmo uma imagem, quando eu executava ele a imagem aparecia e eu nunca via o caminho dele (porem não conseguir alterar o codigo a um ponto dele fazer a verificação)

 

fica o src="timthumb.php" lá

no meu caso eu sei que vou ter que fazer algo do tipo assim

 

verArquivo.php?fileID=589

 

 

Se alguém poder me dar algumas dicas ae dando na Query ou como fazer o arquivo para exibir os arquivos :)

 

Obrigado :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto à primeira dúvida, não use vários valores em um único campo. Como você percebeu na prática, essa abordagem é péssima para consultas. Use uma tabela separada. Veja este meu post sobre isso: http://rberaldo.com.br/usando-campos-multivalorados/

 

Para a segunda dúvida, sugiro ler a documtantação da função header. O Exemplo #1 é justamente sobrei sso. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto à primeira dúvida, não use vários valores em um único campo. Como você percebeu na prática, essa abordagem é péssima para consultas. Use uma tabela separada. Veja este meu post sobre isso: http://rberaldo.com.br/usando-campos-multivalorados/

 

Para a segunda dúvida, sugiro ler a documtantação da função header. O Exemplo #1 é justamente sobrei sso. :thumbsup:

 

Beraldo estou lendo e fazendo alguns teste em cima do seu artigo.

 

Em ralação ao "documentação do header", o exemplo um me serviu para quando efetuo o downloads dos arquivos, mas fiz uma alteração para ele somente ler os arquivos de images e forçar o dowloads dos demais.

 

Olhe o exemplo das imagens que fiz. Ele demorou um pouco a mais. Oque você acha?

3CnwfX.png

Chamei elas assim:

<img src="./files/jpg.jpg" height="520" />

<img src="./lerArquivoImage.php?id=bf.jpg" height="520" />

Só que eu encontrei um problema se eu fazer botão direito e salvar ela, vem a "foto" em .php

 

Existe alguma maneira para alterar essa extenção para a verdadeira ?

 

Codigo que faz o retorno da imagem:

header('Content-Type: image/jpg');
readfile('./files/jpg.jpg');

Aqui estou testando somente com arquivo jpg, porém depois irei efetur a busca em uma array certinho para encontrar os mine-types dos arquivos corretamente.

DESCULPE

 

Para alterar o nome é só utilizar

 

header('Content-Disposition: inline; filename="media.jpg"');

A parte de exibir ficou, já salvando com o nome que eu quero (Ficou como media_[...] pois não estou trazendo ainda as informações do banco)

header('Content-Type: image/jpg');
header('Content-Disposition: inline; filename="media_'.md5(time()).'.jpg"');
readfile('./files/'.$_GET['id'].'');


Já em relação ao Turma01-Turma02-Turma03 estou estudando o artigo, porém ficou um ar de duvida por minha parte:

 

-Você diz que o LIKE é 'pesado' por ser pesado e tal. Ae quando eu li eu lembrei que a um tempo atraz eu li algo sobre 'Indexação ' das tabela, porém pelo fato de ficar mais rápido as consultas ele demora mais na hora de gravar.

 

Ae eu pensei será que esse efeito de aumento de velocidade da consulta também pode ser aplicato no LIKE. Já que o sistema meu é 'melhor a velocidade de consulta do que cadastro'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto ao desempenho das imagens, é normal demorar um pouco mais. Ao chamar a imagem diretamente, o servidor web apenas envia o código da imagem (e geralmente é até compactado). Ao usar um PHP que se comporta como imagem, o servidor web tem que abrir um processo novo para o interpretador PHP, que vai ler a imagem e enviar para a saída. Esse processo demora um pouco mais.

 

 

Quanto aos índices, é sempre bom tê-los. Mas ainda assim é um erro salvar diversos valores em um único campo. Imagine tee que atualizar as turmas. Você precisa selecionar tudo, separar pelo traço usando explode, alterar o array, fazer implode e salvar de novo. Se usar uma tabela separada, o processo será bem mais simples e eficiente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.