Ir para conteúdo

POWERED BY:

Arquivado

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

carneirinho

Upload - opniões de projeto

Recommended Posts

Olá, nos próximos dias estarei fazendo um sistema em asp simples que é um administrador logar e subir arquivos pra usuários baixarem, doc, pdf e etc, até ai tranquilo, o que estou pensando é no seguinte. Quando o admin sobe um arquivo pra pasta, geralmente eu crio uma pasta onde o nome dela seria o md5 da data que subiu para não criar duas pastas com o mesmo nome no servidor e após criada a pasta eu jogo esse arquivo la dentro. Quando uso pra imagem, eu faço um palavrão no nome da imagem e pronto, só vai exibir, nã otem outro uso, agora o doc estou pensando numa maneira de não trocar o nome do arquivo no servidor, dai pensei ou em criar pasta e armazenar cada arquivo em uma pasta, por exempo:

 

donwloads/06ca396d8ac2d438e5465ff3f1c5b008/nomedodoc.doc

 

ficaria melhor do que

 

downloads/06ca396d8ac2d438e5465ff3f1c5b008.doc

 

o que não quero é aparecer a tela "tem certeza que deseja baixar o arquivo "06ca396d8ac2d438e5465ff3f1c5b008.doc", pois é ficaria horrível.

 

o que vocês recomendam, criar a pasta dinamicamente como pensei ou será que existe alguma função que troca o nome do arquivo só na hora de baixar? teriam alguma outra sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Armazenar em pastas é melhor, pois futuramente se possuir muitos arquivos em uma única pasta, vai ficar bem mais lento para você acessar via FTP, caso seja necessário.

 

Pesquisa aqui no Fórum sobre como forçar o download de um arquivo. Usando esse script você consegue substituir o nome do arquivo na hora de baixar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quanto ao armazenamento acho que o ideal seria analisar (quantidade) a longo prazo para uma melhor organização dos arquivos...

Agora pegando carona no post do hargon, vou passar abaixo um exemplo de como forçar o download do arquivo e renomeá-lo apenas para o usuário, preservando o nome original do arquivo no servidor, espero que ajude:

'Função para renomear o arquivo preservando a extensão. (Será utilizada mais abaixo);
'Nesta função, o novo nome é a data atual ex: "3102008.pdf" - Mas pode utilizar outros critérios...
Function renomear(nome)
  Set objFso = Server.CreateObject("Scripting.FileSystemObject")
  ext = objFso.GetExtensionName(nome)
  newNome = Date()
  newNome = Replace(newNome,"/","")
  newNome = Replace(newNome," ","")
  renomear = newNome &"."& ext
  Set objFso = Nothing
End Function

'Aqui você recupera o nome do arquivo original (Form, QueryString, Session, etc...)
varFile = Request("valor")

'Abaixo a rotina para forçar o download do arquivo...
Response.Clear()
Response.AddHeader "Content-Type","application/x-msdownload"
Response.AddHeader "Content-Disposition","attachment; filename=" & renomear(varFile)
Response.Charset = "UTF-8"

Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Open
objStream.Type = 1

objStream.LoadFromFile Server.MapPath(varFile)
Response.BinaryWrite objStream.Read
Response.Flush

objStream.Close
Set objStream = Nothing

Abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Po obrigado, vai ajudar sim, dessa forma eu gravo o nome original do arquivo no bd e na hora de baixar eu faço uma query e ja mando com o nome certo :). Acho que o número de arquivos não ficará tão grande assim, mas agora pensando bem acho que vou usar os dois, vopu criar uma pasta concatenando a data + o nome do cliente direcionado por exemplo download/2008_10_05_163359_cliente/arquivo.pdf assim fica até mais organizado para visualizar o ftp independente do bd, vou dar um gás aqui e depois posto o resultado, valeu pela força.

 

abraço,

 

Carneirinho

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.