我知道我们可以使用
file_get_contents("php://input");
但是我如何在 put 请求中获取文件名?
文件名不作为请求的一部分发送。如果要在服务器端获取文件名,则必须通过其他方式传递它,即查询参数。
如果您在PUT 方法支持页面中使用 PUT,您可以获得他们 PUT 的文件名$_SERVER['REQUEST_URI']
例如,如果我有接收 PHP 脚本
<?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");
?>
当我发出 CURL 时:
curl -X PUT -T "localfile.txt" http://example.com/interesting/target/name.txt
我得到输出(在我的错误日志中)
Received PUT, filename: interesting/target/name.txt, 4931 bytes
如果您问我如何找出源文件系统 (localfile.txt) 中文件的名称,我认为这不会被传递。