How to get filename in php in put request

2020-02-12 22:19发布

问题:

I know we can read put request in file using

file_get_contents("php://input");

But how do i get the filename in the put request?

回答1:

Filename is not sent as a part of the request. If you want to get the filename on the server side, you will have to pass it along by other means, i.e. query parameters.



回答2:

If you're using PUT like in PUT Method Support page, you can get the filename they PUT to as $_SERVER['REQUEST_URI']

For example, if I have the receiving PHP script

<?php
/* PUT data comes in on the stdin stream */
$request_body = @file_get_contents('php://input'); 

error_log("Received PUT,  filename: {$_SERVER['REQUEST_URI']}, " . strlen($request_body) . " bytes");
?>

When I issue the CURL:

curl -X PUT -T "localfile.txt" http://example.com/interesting/target/name.txt

I get the output (in my error log)

Received PUT,  filename: interesting/target/name.txt, 4931 bytes

If you're asking how I could find out the name the file had back on the source file system (localfile.txt) I don't think that gets passed along.



标签: php put