Я создаю мобильное приложение, которое позволяет представить одну или несколько загрузок через конечную точку API сервера Apache / PHP от клиента Flutter Mobile App. Типом контента соответствующей конечной точки является многоуточная/форма-дата , и он всегда работал очень хорошо. Я отправляю запрос mulipart/form-data с использованием:
/// 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
на стороне сервера, и загрузка должным образом получена через $ _FILES .
[*] , когда я отправляю запрос с файлом размера 35,7 МБ, файл и данные JSON не могут быть загружены. Оба $ _post и $ _files в этом случае пусты.
Я создаю мобильное приложение, которое позволяет представить одну или несколько загрузок через конечную точку API сервера Apache / PHP от клиента Flutter Mobile App. Типом контента соответствующей конечной точки является многоуточная/форма-дата , и он всегда работал очень хорошо. Я отправляю запрос mulipart/form-data с использованием: [code]/// Define API HTTP Request headers final Map requestHeaders = {
/// 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 [/code] на стороне сервера, и загрузка должным образом получена через $ _FILES .
[*] , когда я отправляю запрос с файлом размера 35,7 МБ, файл и данные JSON не могут быть загружены. Оба $ _post и $ _files в этом случае пусты.
Я создаю мобильное приложение, которое позволяет представить одну или несколько загрузок через конечную точку API сервера Apache / PHP от клиента Flutter Mobile App. Типом контента соответствующей конечной точки является многоуточная/форма-дата , и...
Я использую плагин Ninja Forms в WordPress. Я успешно отправляю форму, получаю сообщение об этом. Все хорошо. Но если после этого я снова заполняю форму и отправляю, страница перезагружается, но до того, как эти данные будут отправлены и поля со...
Я использую плагин Ninja Forms в WordPress. Я успешно отправляю форму, получаю сообщение об этом. Все хорошо. Но если после этого я снова заполняю форму и отправляю, страница перезагружается, но до того, как эти данные будут отправлены и поля со...
Я использую плагин Ninja Forms в WordPress. Я успешно отправляю форму, получаю сообщение об этом. Все хорошо. Но если после этого я снова заполняю форму и отправляю, страница перезагружается, но до того, как эти данные будут отправлены и поля со...
Я пытался отправить форму с ectype = multipart/form-data . У меня есть этот параметр, потому что в форме будут включены загрузки JPEG /PNG после того, как я выяснил представление AJAX для текстовых вводов. because the alert line shows:...