• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

antoniomanteiga

[PHP]File Uploader

5 mensagens neste tópico

Para postares código, fazes

[ code=php]{ o script }[ /code]

sem os espaços depois das [.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para postares código, fazes

[ code=php]{ o script }[ /code]

sem os espaços depois das [.

O script tem 133 linhas, iria ficar mal aqui colocado. Em vez de me dares dicas básicas, podias ver o código e testar o script, e dar feedback.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para postares código, fazes

[ code=php]{ o script }[ /code]

sem os espaços depois das [.

O script tem 133 linhas, iria ficar mal aqui colocado. Em vez de me dares dicas básicas, podias ver o código e testar o script, e dar feedback.

Apenas te indiquei como se posta código aqui no fórum, mas parece que não percebeste que era esse o objectivo...

Em relação ao script, está elegante, e fizeste o que eu não costumo fazer: declarar funções dentro de funções. Porque o fizeste?

No entanto, não percebo o porquê de estares a usar uma iframe. Na parte onde fazes o handling do $_GET['action'], podias ter sido mais elegante, sem teres de estar a definir os valores como keys. Eu faria assim:

$actions = array("fileUploader", "fileLoader");
$action = $_GET['action'];

if(in_array($action, $actions)) $action();
else mainPage();

Não tenho a certeza disto, mas acho que estás desnecessariamente a gerar id's para cada ficheiro, bastava usares ficheiros[] no name/id dos <input>s. Nunca experimentei este método para enviar ficheiros, mas suponho que funcione.

Uma sugestão: Quando envia, mostrar o link para os ficheiros que foram enviados destacados e não apenas fazer um listing da dir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para postares código, fazes

[ code=php]{ o script }[ /code]

sem os espaços depois das [.

O script tem 133 linhas, iria ficar mal aqui colocado. Em vez de me dares dicas básicas, podias ver o código e testar o script, e dar feedback.

Apenas te indiquei como se posta código aqui no fórum, mas parece que não percebeste que era esse o objectivo...

Em relação ao script, está elegante, e fizeste o que eu não costumo fazer: declarar funções dentro de funções. Porque o fizeste?

No entanto, não percebo o porquê de estares a usar uma iframe. Na parte onde fazes o handling do $_GET['action'], podias ter sido mais elegante, sem teres de estar a definir os valores como keys. Eu faria assim:

$actions = array("fileUploader", "fileLoader");
$action = $_GET['action'];

if(in_array($action, $actions)) $action();
else mainPage();

Não tenho a certeza disto, mas acho que estás desnecessariamente a gerar id's para cada ficheiro, bastava usares ficheiros[] no name/id dos <input>s. Nunca experimentei este método para enviar ficheiros, mas suponho que funcione.

Uma sugestão: Quando envia, mostrar o link para os ficheiros que foram enviados destacados e não apenas fazer um listing da dir.

Tenho uma função declarada dentro de outra função por uma questão de organização. Eu não queria criar uma nova função para usar globalmente, apenas queria organizar aquelas linhas de código mas para usar só ali. é irrelevante. De qualquer maneira deixo uma dica, que não usei neste caso:

    Quando declaras uma função dentro de outra, apenas podes usar a função mãe uma vez, porque fazendo-o mais que uma a função filha é redeclarada o que causa erro e o fim do script. Portanto, em condições especiais, podes usar esta regra para substituir uns if's, imagina por exemplo se só queres que uma função seja chamada uma vez, neste caso em vez de teres um counter e a sua verificação, declaras uma função filha dentro dela.

"if(in_array($action, $actions)) $action();"  é válido, mas mais lento. Só por isso.

quanto à questão de passar valores num array, se experimentares isso com as variáveis _GET,_POST,ou _REQUEST o resultado é o esperado mas com ficheiros fica um bocado estúpido. fica algo do género

array

{

  ["name"] array

                        {

                            ["ficheiro1"] = "nome";

                            ["ficheiro2"] = "outroNome";

                        }

  ["error"] array

                        {

                            ["ficheiro1"] = 0;

                            ["ficheiro2"] = 1;

                        }

}

Ou seja, fica espalhado, por isso usei o método de gerar um ID, mas de qualquer maneira a tua observação foi pertinente.

Usei frames para ficar tipo AJAX. se reparares depois de enviares ficheiros o formulário permanece igual, para veres os últimos ficheiros de que fizeste upload. Foi uma escolha minha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora