Код: Выделить всё
/// Define API HTTP Request headers
final Map requestHeaders = {
'Accept-Language': 'en',
/// Bearer Authorization
'Authorization': 'Bearer BearerToken',
/// http dart package sends the multipart/form-data Content-Type header automatically, so not required here
/// Dummy HTTP Header
'X-CUSTOM-HEADER': 'dummy'
};
/// Build request route via base URI prefix
final Uri route = Uri.https(
'example.org',
"/rest/v1/uploads",
{},
);
/// Prepare POST multipart/form-data request
var request = http.MultipartRequest(
'POST',
route,
);
/// If body parameters have been provided, submit them as part
/// of the multipart/form-data request
final Map body = {'first': 'value', 'second' : 'values'};
for (var key in body.keys) {
request.fields[key] = body[key];
}
/// imageXFile here is of type `XFile` obtained via `https://pub.dev/packages/image_picker`
/// always worked as expected for me
final String imagePath = upload.uploadInfos.imageXFile.path;
final String imageExtension = imagePath.split('.').last.toLowerCase();
MediaType mediaType;
switch (imageExtension) {
case 'jpg':
case 'jpeg':
mediaType = MediaType('image', 'jpeg');
break;
case 'png':
mediaType = MediaType('image', 'png');
break;
case 'heic':
mediaType = MediaType('image', 'heic');
break;
default:
throw Exception();
}
/// Add file of multipart/form-data request
request.files.add([
await http.MultipartFile.fromPath(
/// Submit as array key to allow multiple uploads, if required
'uploads[]',
imagePath,
/// The request occasionally fails without the provision of a filename
/// and mediaType, hence
filename: 'upload.$imageExtension',
contentType: mediaType,
)
]);
/// Then also add all of the custom headers
for (var headerName in requestHeaders.keys) {
request.headers[headerName] = requestHeaders[headerName]!;
}
/// Submit Request
var multipartResponse = await request.send();
final Map? parsedResponse = json.decode(await multipartResponse.stream.bytesToString());
< /code>
Так что эта конечная точка никогда не вызывала никаких проблем; И изображение, а также объект JSON всегда были правильно загружены. Теперь клиент хотел, чтобы я увеличил ограничение размера файла для конечной точки, получая этот запрос, поэтому я соответственно увеличил ограничения загрузки в конфигурации сервера Apache для соответствующей конечной точки: < /p>
[list]
[*] php_value post_max_size 60000000 < /li>
php_value /> < /ul>
После выполнения этого обновления и применения моих обновлений конфигурации путем перезапуска сервера Apache возможны более крупные загрузки и должным образом отправлены. Тем не менее, я получаю следующую проблему: < /p>
Когда я отправляю запрос с файлом размера 110 КБ, файл и данные JSON правильно загружаются. JSON-DATA должным образом принимается через $ _POST [*] , когда я отправляю запрос с файлом размера 35,7 МБ, файл и данные JSON не могут быть загружены. Оба $ _post и $ _files в этом случае пусты.
[/list]
Почему?
Подробнее здесь: https://stackoverflow.com/questions/796 ... s-empty-if