HTTP PUT for file uploads
mike
mike503 at gmail.com
Sat Aug 2 22:43:45 MSD 2008
On 8/2/08, Michael <nginx at thismetalsky.org> wrote:
> Do you mean to have 'rw' there?
Nope :)
Got it to work:
nginx access log:
192.168.1.3 - - [02/Aug/2008:11:39:53 -0700] PUT /put/work.php
HTTP/1.1 "200" 5 "-" "-" "-"
PHP curl script to test (ran from shell):
$file = 'china.txt';
$length = filesize($file);
$ch = curl_init();
$url = "http://192.168.1.3/put/work.php";
$fh = fopen($file, 'r');
curl_setopt($ch, CURLOPT_INFILE, $fh);
curl_setopt($ch, CURLOPT_INFILESIZE, $length);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
i believe you can use a @ or something for the input to a curl script
(instead of opening a filehandle) and it will consider that a file on
the filesystem, but i was just looking for a quick test script. it
will actually be an in-browser applet uploading this, i just wanted to
pick apart the receiving end and test it can be done.
PHP work.php script to receive (VERY crappy code, just trying
different things out):
$fname = '/tmp/uploadtest.txt';
$data = '';
$putdata = fopen('php://input', 'r');
while(!feof($putdata)) {
$data .= fread($putdata,1024);
}
fclose($putdata);
file_put_contents($fname, $data);
exit();
More information about the nginx
mailing list