Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Exemplo de upload e download de arquivos Caros, Estou utilizando o Adianti profissionalmente e estou realmente surpreso com a robustez do framework. Ele é a cara da linguagem PHP, ou seja, sem rodeios, prático e ágil. Pois bem, apesar de ter o livro e de ter buscado bastante nos tutoriais e exemplos eu não fiquei satisfeito com as informações que obtive sobre o processo de upload e download de arquivos. Alguém tem um tutoria...
FF
Exemplo de upload e download de arquivos  
Fechado
Caros,

Estou utilizando o Adianti profissionalmente e estou realmente surpreso com a robustez do framework. Ele é a cara da linguagem PHP, ou seja, sem rodeios, prático e ágil.

Pois bem, apesar de ter o livro e de ter buscado bastante nos tutoriais e exemplos eu não fiquei satisfeito com as informações que obtive sobre o processo de upload e download de arquivos. Alguém tem um tutorial ou exemplo prático de como esses dois processos são implementados no framework?

Grato.

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (17)


AN

Olá Fernando,
Baixe o exemplo Changeman e procure o controlador NewIssueForm.class.php lá tem um exemplo prático de upload. Se tiver dúvidas posta ai.


Abraços!
FF

Ademilson, é por isso que coloquei "não satisfeito com as informações". O exemplo do Changeman não é bom, pois não indica questões relacionadas a configuração (exe.: Extensões permitidas), não tem loader overlay e não mostra qual o padrão de download. Simplesmente coloca no fonte o componente e deu.

Acredito que esse componente não está sólido o suficiente, e terei que estende-lo.
FF

Já que ninguém comentou melhor fazer minha própria rotina mesmo.
PD

Oi Fernando,

O componente de upload de arquivos envia o arquivo por meio do seguinte controlador do framework:
lib/adianti/widget/web/general/TFileUploader.class.php

Acredito que isto lhe ajude a efetuar melhorias.
No momento, ele não restringe extensões.

abraços,
Pablo
FF

Pablo,

Acabei criando um novo uploader baseado na versão 2 do Valums, com controle de tamanho máximo dos arquivos, extensões permitidas e barra de progresso do upload. Para download eu também criei um downloader baseado nessas melhores práticas.

www.richnetapps.com/php-download-script-with-resume-option/
PD

Ótimo Fernando,

Posta aí ;-)

abraço,
Pablo
MS

Alguém tem um exemplo, de envio de um tipo específico de arquivo?
Minha necessidade é o envio de arquivo JPG ou PNG até um certo tamanho e com dimensões específicas.
WW

Olá Pessoal, boa noite!

Gostaria de saber se existe algum processo de download de arquivos no Adianti.
Caso alguém tiver algum exemplo, favor enviar.

Obrigado.
Watson William
RC

Olá Fernando Augusto Fonseca,
você poderia postar as alterações que fez na classe?
FM

Realmente fa fraco de exemplo. Usaram um TStandardForm no exemplo, e esse tipo de formulario "esconde"muitas das functions.... nao consigo enviar o meu upload para a pasta que preciso enviar, ele vai direto para tmp... como fazer para mandar para uma pasta especifica ? alguem sabe ?
JN

Flavio, para manipular o arquivo da pasta temp para a pasta destino segue abaixo um fragmento do código que utilizo durante o método onSave.
Valida se existe um anexo, cria uma pasta com o ID do registro e move para a pasta /anexo/id_do_registro.

  1. <?php
  2.             // Se existe anexo registra e salva.
  3.             if ($form->anexo)
  4.             {
  5.                 $target_folder 'anexo/' $form->chamado_id;
  6.                 $target_file   $target_folder '/' .$form-> anexo;
  7.                 @mkdir($target_folder);
  8.                 rename('tmp/'.$form-> anexo$target_file);
  9.             }
  10. ?>


Espero que ajude.

Abraço.
JN

E para fazer o download ao invés de mostrar o conteúdo na tela, que no meu caso tem que ser assim, alterei o download.php na raiz do framework na linha 27.

  1. <?php
  2.  // alterei de 
  3. header("Content-disposition: inline; filename=\"{$basename}\"");
  4. // para
  5. header("Content-disposition: attachment; filename=\"{$basename}\"");
  6. ?>

FS

Bom dia a todos,
Estou desenvolvendo um sistema para um canil e estou com a seguinte dificuldade:
Gravar o anexo numa pasta específica eu consegui seguindo os exemplos do fórum. O que estou com um pouco de dificuldade é para listar os anexos, pois no banco de dados não está salvando todo o caminho, está salvando apenas o arquivo da imagem.

Por exemplo, a imagem está salva no diretório anexo/2/imagem.jpg, mas no banco de dados aparece apenas imagem.jpg.

Se eu vou no banco de dados e coloco o caminho todo na mão, lista corretamente, então o meu problema está no método onSave acredito. Como faço para que salve todo o caminho no banco de dados?

Método onSave
  1. <?php
  2. public function onSave$param )
  3.     {
  4.         try
  5.         {
  6.             TTransaction::open('cardumed_aama'); // open a transaction
  7.             
  8.             /**
  9.             // Enable Debug logger for SQL operations inside the transaction
  10.             TTransaction::setLogger(new TLoggerSTD); // standard output
  11.             TTransaction::setLogger(new TLoggerTXT('log.txt')); // file
  12.             **/
  13.             
  14.             $this->form->validate(); // validate form data
  15.             
  16.             $object = new Animal;  // create an empty object
  17.             $data $this->form->getData(); // get form data as array
  18.             $object->fromArray( (array) $data); // load the object with data
  19.             $object->store(); // save the object
  20.             
  21.             // have attachments
  22.             if ($object-> foto)
  23.             {
  24.                 $target_folder 'anexos/' $object-> id;
  25.                 $target_file   $target_folder '/' .$object-> foto;
  26.                 @mkdir($target_folder);
  27.                 rename('tmp/'.$object-> foto$target_file);
  28.             }
  29.             
  30.             // get the generated id
  31.             $data->id $object->id;
  32.             
  33.             $this->form->setData($data); // fill form data
  34.             TTransaction::close(); // close the transaction
  35.             
  36.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  37.         }
  38.         catch (Exception $e// in case of exception
  39.         {
  40.             new TMessage('error'$e->getMessage()); // shows the exception error message
  41.             $this->form->setData$this->form->getData() ); // keep form data
  42.             TTransaction::rollback(); // undo all pending operations
  43.         }
  44.     }
  45. ?>


Obrigado.
DM

Mesmo que antigo, vou responder para tentar ajudar quem possa ter a mesma dúvida do Fabiano, você está salvando seu objeto apenas com o nome da imagem, deve-se definir o caminho correto, antes de salvar, defina o $target_file antes de salvar e atribua à propriedade do seu objeto que representa o seu arquivo.
BJ

Olá Davi Menezes!

Aproveitando que você fez esta postagem relativamente recente e que a pergunta não foge ao tema, ai vai: Estou tentando compartilhar um documento PDF com 2,8 MiB ou 2,93601 megabytes e simplesmente não sobe, quando eu tento com um arquivo menor, funciona normal, alguém sabe dizer o que pode ser feito pra resolver essa bronca?

Grato
BJ

Esqueci de informar: Adianti Framework 4.0 / ubuntu 16.04
DM

Beto, verifique upload_max_filesize do seu php