axe_lankaster13
@axe_lankaster13
C++ разраб с большими планами

Как отправить файл на сервер и принять его сервером?

У меня есть учебный сайт, с которым я экспериментирую. Расположен он на бесплатном хостинге, т.е. сервер не локальный, а удалённый.
Задача такова:
Нужно отправить файл на сервер средствами Qt и C++, а потом принять этот файл на сервере средствами PHP.
Я даже не представляю как это сделать -_-
Сомневаюсь, что кто-то может дать конкретный пример отправки и приёма файла(хотя очень хочет XD ), так что просто прошу, укажите в какую сторону копать. Как отправить я ещё более или менее понимаю, а вот как принять ? В PHP полный чайник(((
  • Вопрос задан
  • 1751 просмотр
Решения вопроса 3
@RuComMarket
Битрикс FullStack разработчик
при условии что до принятия все что требуется для обработки php настроено и если вопрос конкретно в коде, то направляю: $_FILES
т.е. у тебя к php приходит запрос с файлом, файлы в запросе оказываются в переменной $_FILES, проверяешь на пустоту, и дальше делаешь что тебе надо, "функции для работы с файлами в php" можешь загуглить
Ответ написан
Комментировать
alekciy
@alekciy
Вёбных дел мастер
В PHP особо принимать не нужно, т.к. он умеет принимать данные формы сразу из коробки. Т.е. берете самую банальную HTML форму с файлом, смотрите что там отправляется и делайте точно так же.
Загрузка файлов методом POST
Ответ написан
@Byte255
Пишу на PHP за еду
Тут всё зависит от того, как именно вы отправляете файл, как http raw post data или как multipart/form-data

В первом (нехорошем) случае данные вашего файла будут доступны вызовом
$data = file_get_contents('php://input');
//И вы его можете сохранить
file_put_contents('path/to/catalog/on/server/file.bin', $data);


Во втором случае вы при отправке даёте какое-то имя полю формы (например 'my_file'), в котором содержатся данные файла и получаете его ещё проще:

В php есть "суперглобальный" массив $_FILES;

$fileData =( $_FILES['my_file'] ?? null);
if (!$fileData) {
    echo 'No file!';
    exit;
}
$success = move_uploaded_file($fileData['tmp_name'], 'path/to/catalog/on/server/file.bin');
var_dump($success); // -> true or false


Отправлять как multipart/form-data для сервера предпочтительнее, так как в этом случае apache сам сохраняет файл во временную директорию и уже потом запускает интерпретатор PHP (это для сервера немного проще, чем сразу запустить php скрипт и "кормить" его вводом в несколько мегабайт а то и гигабайт ). Если при загрузке файла произойдёт ошибка, она будет доступна в $fileData['error'] (int)

Подробнее см. в https://www.php.net/manual/ru/reserved.variables.f...

Что касается Qt, тут далеко ходить за примером загрузки не надо
https://doc.qt.io/qt-5/qhttpmultipart.html
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы