PHP получает файл и помещает его в папку - PullRequest
0 голосов
/ 17 декабря 2018

Я разрабатываю онлайн базу данных фотографий (с php и mysql), и у меня есть функция загрузки и функция загрузки.Функция загрузки работает как чудо, также не сложно загрузить файл с сервера.

Мне было просто интересно, возможно ли (в php) получить файл, но не с обычнымHTML-форма, где вы выбираете файл.

EG Если я хочу загрузить файл «Photo.png», программное обеспечение преобразует изображение в строку base64, а затем отправляет его в сценарий php save.php?base = [BASE64] && filename = [FILENAME]

Как мне заставить скрипт переконвертировать эту строку в Photo.png и затем сохранить ее в папке / img /?

Спасибозаранее, Каспар.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Некоторая информация, которая может вам помочь:

  1. Да, вы действительно можете получать данные в любой форме и делать с ними все, что захотите.В вашем примере вы можете отправить фотографию в кодировке base64 в строке запроса и использовать base64_decode($_REQUEST['base']) или base64_decode($_GET['base']) для ее получения.

ПРЕДУПРЕЖДЕНИЕ. В прошлом многие веб-серверы накладывали ограничения на размер строки запроса, которую он будет обрабатывать, хотя и не уверен, что в наши дни это вызывает большую озабоченность.Проверьте веб-сервер, который вы будете использовать, чтобы убедиться, что он в порядке.Вы можете рассмотреть возможность отправки файла через POST, и в этом случае вам даже не обязательно кодировать его в base64.

Я заметил, что вы отправляете имя файла как часть строки запроса.Если вы используете это, БУДЬТЕ ОЧЕНЬ ОСТОРОЖНЫ, ЧТОБЫ САНИТИЗИРОВАТЬ ЕГО ПЕРВЫЙУбедитесь, что в нем нет косой черты или других специальных символов, чтобы кто-либо не мог произвольно сохранить двоичный файл в любом месте на вашем сервере.Многие PHP-фреймворки могут обработать это для вас из коробки, или зацените этот для более простых опций фильтрации PHP, которые вы можете использовать: очиститель строк для имени файла
0 голосов
/ 17 декабря 2018

Было бы так же просто, как

$data = base64_decode($_GET['base']);
file_put_contents($_GET['filename'], $data)

, прежде чем вы сможете проверить, существуют ли эти ключи и не являются ли они пустыми, а также вам не нужно указывать двойной & в URL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...