wiki:WF/Downloaddearquivos

Version 2 (modified by cassiomaes, 17 years ago) (diff)

--

Descrição: Este plugin tem por finalidade criar links para downloads de arquivos. Estes links não apontam para o arquivo que será baixado e sim para uma página que irá enviar o arquivo (útil para arquivos que estão no banco de dados).

Parâmetros:

base_url : a URL que irá enviar o arquivo (tratar a requisição).

text : texto do link gerado

getParams : parâmetro(s) que identifica(m) o(s) download(s).

Parâmetro obrigatório: getParams

Valor padrão:

text : "download"

base_url : $_SERVER['REQUEST_URI']

Qualquer outro parâmetro passado será incorporado na tag do link gerado.

Exemplos de utilização:

Supondo que o código esteja localizado na URL: http://localhost/expresso/index.php?atividade=99

{wf_download_link getParams="id_arquivo=1"}

irá produzir:

<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1">download</a>

{wf_download_link getParams="id_arquivo=1" text="clique aqui" class="download_css"}

irá produzir:

<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1" class="download_css">clique aqui</a>

{wf_download_link getParams="id_arquivo=1&usuario=2"}

irá produzir:

<a href="/expresso/index.php?atividade=99&download_mode=true&id_arquivo=1&usuario=2">download</a>

{wf_download_link base_url="http://www.outrosite.com/index.php" getParams="id_arquivo=1"}

irá produzir:

<a href="http://www.outrosite.com/index.php?download_mode=true&id_arquivo=1>download</a>


Função: wf_handle_download

Descrição: Esta função gerencia o envio de arquivos solicitados em uma atividade. Esta função deve ser utilizada no arquivo (PHP) que receberá os requests do link gerado com o plugin acima.

Parâmetros:

request: variável (estilo array) que será monitorada para verificar a solicitação de um download. Normalmente utiliza-se as variáveis {{$_GET}} ou {{$_POST}}.

callback: o nome de uma função (em string) que será chamada para selecionar o arquivo requisitado.

Notas sobre a função callback:

1- Deve ser declarada para receber um único parâmetro. Este parâmetro será do tipo array e conterá todos os valores armazenados na variável request (a mesma passada em wf_handle_download)

2- Esta função deve retornar {{null}} caso não consiga enviar um arquivo ou então uma array associativa com dois elementos. Supondo que iremos retornar um arquivo na variável {{$saida}}, temos o seguinte exemplo:

$saida = array();

$saida['filename'] = "nome_arquivo.txt";

$saida['content'] = "Conteúdo do arquivo.";

return $saida;

Exemplo completo de utilização (juntamente com o plugin):

No arquivo de template (.TPL):

{wf_download_link getParams="id_arquivo=1&tipo=2"}

No arquivo de código (.PHP):

function downloadArquivo($params)

{

	if ($params['id_arquivo'] == 1)

	{

		$saida = array();

		if ($params['tipo'] == 2)

		{

			$saida['filename'] = "arquivo.txt";

			$saida['content'] = "Conteúdo do tipo 2";

			return $saida;

		}

		

		if ($params['tipo'] == 5)

		{

			$saida['filename'] = "outro_arquivo.txt";

			$saida['content'] = "Outro conteúdo";

			return $saida;

		}

		

		return null;

	}

	else

		return null;

}



wf_handle_download($_GET, "downloadArquivo");

/* Utilizou-se a variável $_GET porque o link gerado pelo plugin passa os valores por essa variável */

Obs: o parâmetro request pode ser qualquer variável do tipo array associativa (e não somente $_GET e $_POST). Mas, para isso, é necessário que nesta variável esteja definido o elemento "download_mode" com valor "true" (este último sem aspas) quando for requisitado um download.