Моя проблема проста. Мне нужно загрузить файл напрямую на правильный сервер (который в настоящее время имеет низкую рабочую нагрузку).
Поэтому я делаю:
<?php
$server = file_get_contents('http://my-api.com/upload-server.php'); // returns url
?>
тогда я печатаю свою форму как
<form method="post" action="<?php echo $server; ?>"...
Теперь я хотел бы перенести этот шаг на начало загрузки, например:
<form method="post" action="http://my-api.com/upload-gateway.php"...
этот URL должен перенаправить на "настоящий" сервер.
Чтобы страница загрузки не замедляла загрузку и у меня был статический HTML-код, который я могу кэшировать, вставлять и т. Д.
Проблема в том, что это прекрасно работает с запросами get, но не с запросами post.
Похоже, что запрос преобразуется в запрос get при перенаправлении с использованием заголовка location. Все почтовые данные потеряны.
Это невозможно или я делаю это неправильно? И да, я рассмотрел удаленный динамический JavaScript, который печатает HTML-код с правильного сервера в первую очередь. Я бы предпочел не делать этого ...
есть идеи? Мабы альтернативных методов загрузки?
редактирование:
это точный HTML-код, который я использую:
<form method='post' enctype='multipart/form-data' action='http://storage.ivana.2x.to/rest.php?action=target'>
<input type=hidden name=testfield value="test">
File to upload: <input type=file name=upfile><br>
Notes about the file: <input type=text name=note><br>
<br>
<input type=submit value=Press> to upload the file!
</form>
это код перенаправления, который я использую:
if($_GET["action"] == "target") {
header("Location: http://storage.ivana.2x.to/rest.php?action=test");
}
это код вывода, который я использую, чтобы увидеть результаты:
if($_GET["action"] == "test") {
echo "<pre>";
var_dump($_POST);
var_dump($_GET);
var_dump($_FILES);
}
результат при загрузке небольшого файла выглядит так:
array(0) {
}
array(1) {
["action"]=>
string(4) "test"
}
array(0) {
}