Sophie

Sophie

distrib > Mandriva > 2008.1 > i586 > by-pkgid > 703d980c580707c382b4e43e25965bc5 > files > 60

php-manual-pt_BR-5.2.4-1mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML
><HEAD
><TITLE
>Suporte ao método PUT</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
REL="HOME"
TITLE="Manual do PHP"
HREF="index.html"><LINK
REL="UP"
TITLE="Gerenciar o upload de arquivos"
HREF="features.file-upload.html"><LINK
REL="PREVIOUS"
TITLE="Carregando múltiplos arquivos"
HREF="features.file-upload.multiple.html"><LINK
REL="NEXT"
TITLE="Usando arquivos remotos"
HREF="features.remote-files.html"><META
HTTP-EQUIV="Content-type"
CONTENT="text/html; charset=UTF-8"></HEAD
><BODY
CLASS="sect1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Manual do PHP</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="features.file-upload.multiple.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Capítulo 38. Gerenciar o upload de arquivos</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="features.remote-files.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="sect1"
><H1
CLASS="sect1"
><A
NAME="features.file-upload.put-method"
>Suporte ao método PUT</A
></H1
><P
>&#13;    O suporte ao método PUT mudou entre PHP 3 e PHP 4.
    No PHP 4, deve se usar a entrada padrão para ler
    os conteúdos de um PUT.
   </P
><P
>&#13;    <TABLE
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
CLASS="EXAMPLE"
><TR
><TD
><DIV
CLASS="example"
><A
NAME="AEN7086"
></A
><P
><B
>Exemplo 38-4. Salvando arquivos HTTP PUT com o PHP 4</B
></P
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php<br /></font><font color="#FF8000">/* PUT data vem do stdin stream */<br /></font><font color="#0000BB">$putdata </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#DD0000">"php://stdin"</font><font color="#007700">, </font><font color="#DD0000">"r"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">/* Abre um arquivo para escrita */<br /></font><font color="#0000BB">$fp </font><font color="#007700">= </font><font color="#0000BB">fopen</font><font color="#007700">(</font><font color="#DD0000">"myputfile.ext"</font><font color="#007700">, </font><font color="#DD0000">"w"</font><font color="#007700">);<br /><br /></font><font color="#FF8000">/* Lê os dados 1KB de cada vez<br />&nbsp;&nbsp;&nbsp;e escreve no arquivo */<br /></font><font color="#007700">while (</font><font color="#0000BB">$data </font><font color="#007700">= </font><font color="#0000BB">fread</font><font color="#007700">(</font><font color="#0000BB">$putdata</font><font color="#007700">,</font><font color="#0000BB">1024</font><font color="#007700">))<br />&nbsp;&nbsp;</font><font color="#0000BB">fwrite</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">,</font><font color="#0000BB">$data</font><font color="#007700">);<br /><br /></font><font color="#FF8000">/* Fecha os streams */<br /></font><font color="#0000BB">fclose</font><font color="#007700">(</font><font color="#0000BB">$fp</font><font color="#007700">);<br /></font><font color="#0000BB">fclose</font><font color="#007700">(</font><font color="#0000BB">$putdata</font><font color="#007700">);<br /></font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
></DIV
></TD
></TR
></TABLE
>
   </P
><DIV
CLASS="note"
><BLOCKQUOTE
CLASS="note"
><P
><B
>Nota: </B
>
     Toda a documentação abaixo aplica-se ao PHP 3 somente.
    </P
></BLOCKQUOTE
></DIV
><P
>&#13;    PHP prove suporte para o método HTTP PUT usado por clientes como
    <SPAN
CLASS="productname"
>Netscape Composer</SPAN
> e W3C <SPAN
CLASS="productname"
>Amaya</SPAN
>. Requisições PUT são muito mais simples do que o upload de arquivo e
    se parecem com isto:
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN7094"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>PUT /path/filename.html HTTP/1.1</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Isto normalmente indica que o cliente remoto gostaria de salvar
    o conteúdo que se segue como: <TT
CLASS="filename"
>/path/filename.html</TT
> na sua arvore web.
    É obvio que não é uma boa idéia para o Apache ou o PHP automaticamente
    permitir que todos possam sobrescrever arquivos na sua arvore web. Então, para manusear
    este tipo de requisição você tem primeiro que dizer ao seu servidor web que você quer
    que um certo script PHP cuide da requisição. No apache você faz isto com
    a diretiva <SPAN
CLASS="emphasis"
><I
CLASS="emphasis"
>Script</I
></SPAN
>. Pode ser colocada praticamente
    em qualquer lugar do seu arquivo de configuração do Apache. Um lugar comum é
    dentro de um bloco &#60;Directory&#62; ou talvez dentro de um bloco
    &#60;Virtualhost&#62;. Uma linha como esta deve fazer o truque:
    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN7099"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><PRE
CLASS="programlisting"
>Script PUT /put.php</PRE
></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Isto diz para o apache enviar todas as requisições PUT que estejam no contexto
    que você colocou esta linha para o script put.php. Isto assume, é claro,
    que você tem o PHP ativado para a extensão .php
    e que o PHP esta ativo.
   </P
><P
>&#13;    Dentro do seu arquivo put.php você deve então fazer algo parecido com isto:
   </P
><P
>&#13;    <DIV
CLASS="informalexample"
><P
></P
><A
NAME="AEN7104"
></A
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
CELLPADDING="5"
><TR
><TD
><code><font color="#000000">
<font color="#0000BB">&lt;?php copy</font><font color="#007700">(</font><font color="#0000BB">$PHP_UPLOADED_FILE_NAME</font><font color="#007700">, </font><font color="#0000BB">$DOCUMENT_ROOT </font><font color="#007700">. </font><font color="#0000BB">$REQUEST_URI</font><font color="#007700">); </font><font color="#0000BB">?&gt;</font>
</font>
</code></TD
></TR
></TABLE
><P
></P
></DIV
>
   </P
><P
>&#13;    Isto deve copiar o arquivo para a localização requisitada pelo cliente remoto. 
    Você provavelmente quer fazer alguma checagem e/ou
    autenticar o usuário antes de fazer esta copia de arquivo. O único
    truque aqui é que quando o php vê uma requisição com o método PUT ele guarda
    o arquivo carregado em um arquivo temporário justo como se
    fosse manuseado pelo método <A
HREF="features.file-upload.html#features.file-upload.post-method"
>POST</A
>.
    Quando a requisição termina, este arquivo temporário é apagado. Assim seu
    script de manuseio do PUT tem que copiar este arquivo em outro lugar.
    O nome deste arquivo temporário esta na variável <CODE
CLASS="varname"
>$PHP_PUT_FILENAME</CODE
>,
    e você pode ver o nome de arquivo de destino sugerido em
    <CODE
CLASS="varname"
>$REQUEST_URI</CODE
> (deve variar em servidores diferentes do apache). Este nome do arquivo de destino
    é o que o cliente remoto especificou.
    Você não tem que ouvir o cliente. Você pode, por exemplo, copiar todos
    os arquivos carregados para um diretório especial de uploads.
   </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="features.file-upload.multiple.html"
ACCESSKEY="P"
>Anterior</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Principal</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="features.remote-files.html"
ACCESSKEY="N"
>Próxima</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Carregando múltiplos arquivos</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="features.file-upload.html"
ACCESSKEY="U"
>Acima</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Usando arquivos remotos</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>