Back-End

18 set, 2008

Excluindo arquivos de forma inteligente

Publicidade

Caros, por esses dias precisei gerar um arquivo PDF para o usuário baixar, mas enfrentei um problema. Ao gerar o PDF diretamente no navegador utilizando BinaryWrite e alterando o ContentType da página, encontrei muitos erros devido às configurações em navegadores distintos.

Para não depender do navegador do usuário, resolvi gerar os arquivos em uma determinada pasta no servidor, redirecionar a página para o usuário baixar o arquivo e executar uma rotina que apagasse os arquivos de tempos em tempos.

Desenvolvi essa página ASP onde determinei em constantes o “tempo de vida” dos arquivos. É necessário agendar essa rotina para ser executada no servidor.

Segue abaixo o código ASP utilizado:

<%
´Constante que determina o "tempo de vida" dos arquivos
const TEMPO_DE_VIDA = 20

´Constante que determina a unidade do "tempo de vida"
´yyyy - Year´
´q - Quarter
´m - Month
´y - Day of year
´d - Day
´w - Weekday
´ww - Week of year
´h - Hour
´n - Minute
´s - Second
const TEMPO_DE_VIDA_UN = "n"

´variável para 
dim pasta
pasta = Server.MapPath("./arquivos/")

´Declara o File System Object
set fso = server.CreateObject("Scripting.FileSystemObject")

´GetFolder retorna a pasta passada por parâmetro
set fsoP = fso.getFolder(pasta)

´fsoP.files contem todos os arquivos da pasta
for each arq in fsoP.files
	´Escreve na tela o nome do arquivo e sua data de criação.
	Response.Write(arq.name&" - criado em "&arq.dateCreated&".<br />")
	
	´Caso o "tempo de vida" do arquivo tenha passado o tempo permitido, o arquivo é deletado
	if DateDiff(TEMPO_DE_VIDA_UN,arq.dateCreated,now) > TEMPO_DE_VIDA then
		´Escreve na tela o nome do arquivo deletado
		Response.Write(arq.name&" deletado.<br/>")
		
		´Deleta o arquivo
		arq.Delete		
	end if
next

´Libera variáveis da memória
set pasta = nothing
set arq = nothing
set fsoP = nothing
set fso = nothing
%>

Seguem alguns dos atributos do file (arq) que podem ajudá-los no critério para exclusão dos arquivos.

Attributes (pode ser setado)

Atributos do arquivo. Pode ser um ou mais dos seguintes valores:

  • 0 = Arquivo normal
  • 1 = Arquivo somente leitura
  • 2 = Arquivo oculto
  • 4 = Arquivo de sistema
  • 16 = Pasta ou diretório
  • 32 = Arquivos alterados desde o último backup
  • 1024 = Link ou atalho
  • 2048 = Arquivo compactado

DateCreated

Retorna a data e a hora em que o arquivo foi criado.

DateLastAccessed

Retorna a data e a hora em que o arquivo foi acessado.

DateLastModified

Retorna a data e a hora da última vez que o arquivo foi modificado.

Drive

Retorna a letra do drive em que o arquivo está.

Name (pode ser setado)

Nome do arquivo.

ParentFolder

Retorna o caminho complete da pasta onde o arquivo está.

Path

Retorna o caminho complete do arquivo no servidor.

Size

Retorna o tamanho, em bytes, do arquivo.

Type

Retorna o tipo do arquivo.

Abraço!

Sugestões para os próximos enviem e-mail para eliezer@zarpsystem.com.br.