AWS-Enthusiasten, die ich bin, muss ich zugeben, dass die Die ursprünglichen Architekten von S3 machten einen extrem unglücklichen Fehler, als sie entschieden, dass +
im Pfad einer URL interpretiert werden sollte, als wäre sie äquivalent zu ASCII 0x20 ("Leerzeichen").
Das Zeichen +
trägt nur dann diese Bedeutung, wenn es Teil der Abfragezeichenfolge ist. Im Pfad ist es should have been interpreted literally.
Im Pfad einer korrekt codierten und interpretierten URL entspricht +
%2B
.
Es gibt also keine verlässliche Antwort auf die Frage, da der Grund dafür ist, dass S3 falsche URLs falsch behandelt.
Angesichts der Tatsache, dass, wenn die Beispiel-URL von einem Browser verwendet würde, würde S3 davon ausgehen, dass diese Leerzeichen waren, würde Ihre Interessen wahrscheinlich am besten gedient, indem Sie die URL zu %2B
nicht verwenden, sondern es wie in der verwenden Interaktion mit S3 ... es sei denn, praktische Erfahrung legt nahe, dass die ursprüngliche Quelle dieser URLs tatsächlich mit S3 interagiert hat und sie tatsächlich in %2B
transformiert hat, ohne sie für die nachfolgende Verwendung mit konsistenter Codierung zu speichern. In diesem Fall könnte argumentiert werden, dass dies der Fall ist Ihnen etwas falsches zur Verfügung gestellt zu bekommen, aber Sie müssen sie vielleicht transformieren, aus Gründen, die eher politisch als technisch sind.
Aber, wie es scheint, Sie bereits vermuten, ist die Antwort weniger als einfach.
können Sie versuchen, URI Info '$ _SERVER [ 'QUERY_STRING']' oder '$ _SERVER [ 'REQUEST_URI']' – Dolbik
@Dolbik Die Daten werden gesendet als 'JSON' zusammen mit dem' Post' Anfrage abzurufen –
Wenn Sie 'urldecode()' der Dateiname aus der Abfrage-String, dann was auch immer es ausgibt wird sein, wie der Dateiname aufgerufen wird. Es wird die '% 2B' in die' + 'und die' + 'in ein Leerzeichen zurück konvertieren. – Rasclatt