(CURL, PHP) Fazendo upload de arquivos com pedido PUT, como processo isso?

isto é o que eu tenho em processo.php

parse_str(file_get_contents("php://input"),$upload_data); if (isset($upload_data)) { print_r($upload_data); exit; } 

É assim que eu consulta para o servidor usando curl.

 weldan@prindu:~$ curl -X PUT -H "X-TOKEN: test123" -F filedata=@/home/weldan/Pictures/Cool-Pictures1.jpg http://host.tld/process.php Array ( [------------------------------22031b6e799c Content-Disposition:_form-data;_name] => "filedata"; filename="Cool-Pictures1.jpg" Content-Type: image/jpeg     ) 

de modo que, como eu sei, há arquivos carregados lá.

O problema atual é, como processo esse arquivo como $ _FILES variável?

aberto para outra maneira de conseguir isso também.

obrigado

A matriz $ _FILES sendo preenchida em pedidos PUT. Isso ocorre porque uma solicitação PUT especificará o nome do arquivo na URL e o conteúdo do arquivo no corpo. Nada mais.

Você terá que usar a php://input como você já sugeriu.

upload.php

 < ?php /* PUT data goes to php://input */ echo file_get_contents("php://input"); 

Em seguida, use a seguinte linha de comando curl:

 curl --upload -H "X-TOKEN: test123" a.txt http://localhost/upload.php 

Atualização após comentários : usar a opção --upload deve atender às suas necessidades. Em diferença para -X PUT juntamente com -F, os dados serão enviados em bruto e não serão codificados multipart / form-data. Um dos tesouros escondidos do curl;)