#laravel #flutter #laravel-7 #dio
#laravel #flutter #laravel-7 #dio
Вопрос:
Код Flutter:
Обычный объект Data JSON
var data = {
'society_id': widget.societyId,
'name': _currentCategory,
'details': txtDescription.text,
'type': "Society Residential Complaint"
};
FormData для запроса Dio
FormData formData = FormData.fromMap({
'society_id': widget.societyId,
'name': _currentCategory,
'details': txtDescription.text,
'type': "Society Residential Complaint"
});
if (selectedFile != null) {
String path = selectedFile.path;
String imagename = selectedFile.path.split('/').last;
print("Photo Selected");
formData.files.add(
MapEntry(
"photos[]",
await MultipartFile.fromFile(
path,
filename: imagename.toString(),
),
),
);
}
Функция, которая сделает запрос Dio Post
Future raiseComplaint(FormData formData, data) async {
await _getToken();
String requestUrl = serverURL '/complaint/add';
print("Sending Req: $requestUrl");
print("--- complaint details: $formData");
print("--- complaint details: $data");
try {
dio.options.headers['Content-Type'] = 'application/json';
dio.options.headers["Authorization"] = "Bearer $_accessToken";
Response serverResponse = await dio.post(requestUrl, data: formData);
var response = _returnResponse(serverResponse);
print("Recieving Res: $requestUrl");
print(response);
return response;
} catch (e) {
throw e;
}
}
Запрос вызова
var response = await raiseComplaint(formData, data);
Проблема:
из функции raiseComplaint(), если я отправляю обычный объект json, я получаю все параметры. Мне также нужны файлы вложений, поэтому я использую объект Dio FormData. Объект FormData переносит все параметры в fields
map и вложения в files
map, которые я не могу получить на сервере.
На сервере (Laravel) я не получаю никаких параметров или файлов из запроса из-за сбоя проверки laravel. Я искал документацию по пакету Dio, но не нашел никакой помощи. Нам нужно выполнить запрос Dio, поэтому, пожалуйста, если кто-то сталкивался с этой ошибкой в прошлом, помогите. Спасибо.
Комментарии:
1. Вы должны использовать
multipart/form-data
вместоapplication/json
, поскольку отправляете файл.2. @AdlanArifZakaria Спасибо за ответ, мы тоже это пробовали, но из мобильного приложения данные не отправляются, поэтому мы ничего не смогли получить на стороне сервера. Я зарегистрировал массив PHP $ _POST amp; $ _FILES, но оба они пусты.
3. какие-либо обновления? Такая же проблема