PplWare Mobile

PHP é à quinta-feira – Upload de uma Imagem

                                    
                                

Este artigo tem mais de um ano


Autor: Pplware


  1. Bónus says:

    Excelente dica. No entanto convém lembrar que o PHP necessita da GD Library para que estas funções funcionem.
    Aproveito para indicar um pequeno tutorial para adicionar uma compilação do PHP com a GD Lybrary, para Mac. Para Linux deve funcionar exactamente da mesma forma.
    http://macoshelp.blogspot.com/2008/02/adding-gd-library-for-mac-os-x-leopard.html

    Cumprimentos e mais uma vez, parabéns pelo excelente artigo!

  2. Joao c says:

    Obrigado pela explicação, excelente post.
    Obrigado Bruno

  3. softclean says:

    Aquela parte ali de redimensionar dá-me a sensação de a ter visto de forma mais simplificada, mas também não li atentamente para perceber o que faz ao concreto.

    Eu por acaso estava a pensar (o que não significa que irei fazer, também estou em exames) escrever um artigo para aqui. Como é que posso enviar a minha proposta/artigo para esta rubrica? O que preciso de enviar?

  4. JoniD says:

    Bom trabalho. Apenas um ou dois pequenos reparos: o segundo switch case é desnecessário uma vez que poderias fazer a atribuição do formato de imagem ao header logo no primeiro switch. No segundo switch, o 4º caso (jpeg) está redundante porque a variável ext nunca tomará o valor “jpeg”.
    Continua o óptimo trabalho que tens feito até aqui e já agora, aproveito para te desejar boa sorte para os exames. 😉

  5. Obrigado pelos vossos comentários, e aproveito para dizer que, obviamente, as funções que aqui coloco podem ter redundâncias, nem sempre considerar todas as hipóteses e até mesmo código não optimizado. Tal acontece porque algumas destas funções já as desenvolvi há muito tempo, e por vezes são adicionadas funcionalidades após a construção inicial (como foi o caso da transparência).

    Aproveitei esta rubrica para dar a conhecer código que muitas vezes uso ou pode ser útil para quem programa em PHP. Sei que no início andei à procura de muita coisa que ando aqui a colocar e o meu objectivo é ajudar essas pessoas, assim como também obter dicas sobre como melhorar partes do código ou até alternativas ao mesmo.

    Obrigado novamente.

  6. Em ColdFusion, bastaria uma linha!

    cffile action=”upload” filefield=”form.clip” destination=”c:\Websites\testfolder\subfolder\#form.writer#\” accept=”audio/mpeg” nameconflict=”MakeUnique”

    • JoniD says:

      Pois, mas falta a parte do redimensionamento que te acrescentaria um bom número de linhas ao código bem como referências externas ao projecto, embora o nº total de linhas seja sempre inferior às do PHP… 😀 No entanto estou bastante curioso em relação ao ColdFusion uma vez que a nível profissional só desenvolvo em ASP.NET e PHP e essa plataforma está a ganhar cada vez mais terreno. Tenho que experimentar isso um dia destes 😀

      • Está a ganhar terreno? Espantosas notícias me dás, eu que tive de abandonar essa linguagem maravilhosa (e simples!!!) por causa dos custos envolvidos.

        Pode ser que a “moda” (cá nunca o foi) volte…

        Quanto ao redimensionamento, existem tags para o efeito pelo que, novamente, apenas seria precisa uma linha para passar os parâmetros.

        • JoniD says:

          Relativamente ao redimensionamento, não seria apenas 1 linha de código (acredito que gostes muito de ColdFusion, mas daí a fazer-se tudo com 2 linhas já é exagerado até para os menos cépticos)… Podes confirmar aqui uma das maneiras de efectuar o que foi apresentado nesta rubrica para PHP: http://www.scottpinkston.org/blog/index.cfm/2007/7/13/Image-Uploads-and-Resizing-with-ColdFusion-8

          Contudo, se souberes essa maneira das 2 linhas agradecia que postasses, porque até fiquei curioso. No entanto, não hajam dúvidas que é muito mais simples do que PHP ou até ASP.NET. Mas isso é tudo muito relativo, porque adicionas uma classe ao projecto e chamas o método com uma linha de código também. Uma coisa é ser mais fácil, outra coisa é teres de acrescentar uma classe com funcionalidades que não vêm na API. Mas admito que é de louvar o ColdFusion trazer funcionalidades actualmente fulcrais já implementadas.

          Quanto ao ganho de terreno, eu nunca disse que era cá (aliás isso é tão impensável, que eu admito que nem sequer conheço um único site português que apresente páginas desenvolvidas em ColdFusion). Por isso é que até fiquei com a ideia de que desenvolvias para empresas estrangeiras. Basta ires à página de customers da Adobe que usam ColdFusion e vês que são só empresas internacionais de grande envergadura. Se fossemos a olhar apenas aos custos, vias por exemplo os sites dos nossos bancos portugueses feitos em PHP ao invés de ASP…
          Se por outro lado és trabalhador independente, já deverias saber que o ColdFusion estaria fora de questão antes de sequer pegares nele.

          • Por cá tens a Roche Farmacêutica.

            A questão das duas linhas de código é verdadeira pelo seguinte: é certo que haveria que desenvolver o código do redimensionamento mas a “filosofia” do ColdFusion é a utilização de tags como no HTML (existe um modo de “script”, também).
            Os tags podem ser “incorporados” na instalação do CF, bastando, depois, chamá-los como qualquer outro. Para além disto, existem bibliotecas de tags (que podes equiparar, de certa forma, a funções) não te cabendo a ti, utilizador comum, percebê-los. Apenas tens de colocar determinado ficheiro numa certa pasta e invocá-lo posteriormente.
            Ou seja, quando chegasse a altura de escreveres, efectivamente o teu código, o redimensionamento implicaria, de facto, uma só linha, contribuindo para uma grande limpeza no código.

            Uma das grandes vantagens do CF é que não há necessidade de explicitamente incorporar ficheiros para incluir funções. Desde que os ficheiros dos tags estejam na pasta certa, tudo está acessível como se fosse uma função nativa.

          • Outra das vantagens é que existe “normalização”, ou seja, uma query feita por mim ou por um programador em Marte, é feita da mesma forma, usando o mesmo código. Isto permite muito maior facilidade na compreensão de código alheio (maravilha para o “open source”, não?).

            Mas… enquanto não houver um servidor ColdFusion gratuito, a coisa não descolará…

          • JoniD says:

            Obrigado pelo esclarecimento. É de facto uma plataforma deveras impressionante para sites a serem desenvolvidos em tempo crítico. Mas lá está, apenas viável para quem esteja disposto a pagar pelo alojamento. Lentamente, pode ser que isso ainda venha a mudar.

  7. joao says:

    Seria melhor se tivesse mais explicações sobre cada parte do código pelo menos, tal como comentários, etc.

    Cumps

  8. DreamWave says:

    Boas ,
    Uma função útil para qualquer programador (principiante ou não) já que não vamos estar a decorar todas as funções que criamos/utilizamos .
    Permite-me que adicione 2 dicas :
    Para que o upload de um ficheiro (imagem ou não) seja possível o formulário tem de ter a seguinte enctype:
    enctype=”application/x-www-form-urlencoded”

    Ou vão andar passar o resto do dia a tentar fazer o debug do PHP o resto do dia quando o erro reside no bom velho HTML .

    Outra, esta já no PHP:
    Para verificar se o existe um ficheiro a enviar e tratar utilizo o seguinte :

    if($_FILES[‘NOME_DO_CAMPO_DE_FICHEIRO’][‘error’] != 4){

    /*
    … codigo para upload/tratamento do ficheiro …
    */

    }

    pode servir de condição para evocar a função ou ser adicionada na própria função

    Cumprimentos.
    Keep Going !

Deixe um comentário

O seu endereço de email não será publicado.

You may use these HTML tags and attributes: <a href="" title="" rel=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. A administração deste site reserva-se, desde já, no direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.