Отправляю файлы (избражение, изображние в архиве) на сервер POST-запросом. Файл приходит(данные появляются в $_FILES).
Но принять файлы нужно через функцию:
$data = file_get_contents('php://input');
Но функция ничего не возвращает.
Данный участок кода встречается в файлах обработчиках выгрузки из 1С, принимает архив который отправляет 1С. И там он успешно работает. Но в моём случает работать отказывается.
В мануале об этом сказано:
php://input недоступен с типом содержимого enctype="multipart/form-data"
Обойти можно используя другой content-type, но это значит, что отправку надо будет делать самому (стандартная форма не годится).
UPD Пример отправки из js
index.php:
<?php
// php -S 127.0.0.1:8080
$method = $_SERVER['REQUEST_METHOD']?? null;
if ($method === 'POST') {
$body = file_get_contents('php://input');
if ( ! empty($body)) {
file_put_contents(__DIR__ . '/file', $body);
http_response_code(201);
exit(0);
} else {
http_response_code(400);
exit(1);
}
} else {
require __DIR__ . '/form.phtml';
}
form.phtml:
<form id="form" action="" method="POST">
<input type="file" name="file">
<button type="submit">Submit</button>
</form>
<script>
var form = document.querySelector('#form');
form.addEventListener('submit', function(event) {
event.preventDefault();
var fileInput = event.target.querySelector('input[type="file"]');
var file = fileInput.files[0];
if (file) {
var rq = new XMLHttpRequest();
rq.open(
event.target.getAttribute('method'),
event.target.getAttribute('action')
);
rq.onload = function() {
alert('Ok');
};
rq.onerror = function() {
alert('Fail');
};
rq.send(file);
} else {
alert('Не выбран файл');
}
});
</script>
Это должно сработать.
$fp= fopen("1.txt","w");
if (fwrite($fp, file_get_contents('php://input'))) {
echo 'Success';
} else {
echo 'Error';
}
fclose($fp);
Но если внимательно почитать документацию, то у php://input есть ограничение по директиве allow_url_include. Подробнее: здесь
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Всем приветЗадался вопросом, как правильно отдавать пользователю на загрузку большой файл? Использую Laravel, при стандартном подходе response()->download()...
У меня есть 3 сущности: Customer, User и VerificationEmail
У меня есть простой север на Spring`е, что должен обрабатывать GET, PUT и POST запросы, и работать с БД соответственноС GET никаких проблем нет, и приложение...
При генерации csv файла и последующем его открытии в excel получаю ошибкуРешить ее удалось добавив в первую ячейку первым символом пробел