7.3.4 Campos do tipo File(Arquivo)
Para adicionar campos do tipo arquivo (file), você primeiro deve se certificar que o formulário está definido como "multipart/form-data". Para isso crie o seu formulário usando uma dessas formas abaixo.
echo $form->create('Arquivo', array('enctype' => 'multipart/form-data') );
// OUTRA ALTERNATIVA
echo $form->create('Arquivo', array('type' => 'file'));
echo $form->create('Arquivo', array('enctype' => 'multipart/form-data') );// OUTRA ALTERNATIVAecho $form->create('Arquivo', array('type' => 'file'));
Em seguida, adicione uma das duas linhas ao seu arquivo de exibição do formulário.
echo $form->input('Arquivo.file', array('between'=>'<br />','type'=>'file'));
// ou
echo $form->file('Arquivo.file');
echo $form->input('Arquivo.file', array('between'=>'<br />','type'=>'file'));// ouecho $form->file('Arquivo.file');
Devido a limitações do próprio HTML não é possível adicionar valores nos campos do tipo arquivo (file). Cada vez que o formulário for exibido o seu valor sempre será vazio (em branco).
Após o envio, os campos do tipo arquivo (file) mostram um array com os dados para o script que recebe os dados do formulário.
Para o exemplo acima, os valores enviados sempre estará organizado da forma como mostrado abaixo. O caminho físico do arquivo na variável 'tmp_name' pode váriar de acordo com o sistema operacional usado pelo CakePHP.
$this->data['Arquivo']['file'] = array(
'name' => nome_do_arquivo.pdf
'type' => application/pdf
'tmp_name' => C:/WINDOWS/TEMP/php1EE.tmp
'error' => 0
'size' => 41737
);
$this->data['Arquivo']['file'] = array('name' => nome_do_arquivo.pdf'type' => application/pdf'tmp_name' => C:/WINDOWS/TEMP/php1EE.tmp'error' => 0'size' => 41737);
Esse array é gerado automaticamente pelo próprio PHP. Para mais detalhes sobre os dados de arquivo passados pelo PHP leia a documentação no site oficial do PHP.
7.3.4.1 Validando Uploads
Abaixo é um exemplo do método de validação que você pode definir no seu model para validar se um arquivo foi enviado com sucesso.
// Baseado no comentário 8 de: http://bakery.cakephp.org/articles/view/improved-advance-validation-with-parameters
function isUploadedFile($params){
$val = array_shift($params);
if ((isset($val['error']) && $val['error'] == 0) ||
(!empty($val['tmp_name']) && $val['tmp_name'] != 'none'))
{
return is_uploaded_file($val['tmp_name']);
} else {
return false;
}
}
// Baseado no comentário 8 de: http://bakery.cakephp.org/articles/view/improved-advance-validation-with-parametersfunction isUploadedFile($params){$val = array_shift($params);if ((isset($val['error']) && $val['error'] == 0) ||(!empty($val['tmp_name']) && $val['tmp_name'] != 'none')){return is_uploaded_file($val['tmp_name']);} else {return false;}}


























