@Farrien
Tell me who

Как раскодировать php input после axios post?

var fd = new FormData();
			fd.append('file', this.file);
			fd.append('title', this.filename);
			fd.append('category', this.category);
			fd.append('action', 'add');
		//	fd.append('show_errors', '1');
			axios({
				url: '/admin/docs',
				method: 'post',
				headers: {
					'Content-Type': 'multipart/form-data'
				},
				data: fd,
			}).then(res => {
				console.log(res.data);
			//	location.reload();
			})
			.catch(function(){
				alert('Ошибка! Что-то упустили.');
				console.log('Upload fail');
			});


'Content-Type': 'multipart/form-data' я выставил, но $_POST все недоступен. Есть только данные в php://input
Это работало на тестах в OpenServer, но вот на виртуальном хостинге не хочет. Как получить поля и файл через php://input вообще? там не просто json и через json_decode не получается блин
  • Вопрос задан
  • 228 просмотров
Решения вопроса 1
@Farrien Автор вопроса
Tell me who
Все работает. Оказалось, что на VPS стояло ограничение на загрузку файлов в 2мб, поэтому не работало.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@granty
Согласно RTFM, php://input недоступен с типом содержимого enctype="multipart/form-data".

php://input это простой файл, данные из него читаются просто:
$buff = '';
$fp = fopen("php://input", "rb");
while (!feof($fp)) $buff .= fread($fp, 1024);
fclose($fp);

json должен присылаться с Content-type: application/json, и согласно RFC4627 он должен присылаться в Unicode (UTF-8 по умолчанию):
JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.

Можно смотреть реальную кодировку json из заголовка, например Content-type: application/json; charset=utf-16), если присылается правильный заголовок. Можно и автодетектить кодировку по первым 4-м байтам.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы