Неоднократное получение UPLOAD_ERR_PARTIAL в PHPApache

Ответить
Anonymous
 Неоднократное получение UPLOAD_ERR_PARTIAL в PHP

Сообщение Anonymous »

У меня есть клиент мобильного приложения (flutter, iOS и Android), из которого я загружаю изображения, выбранные или снятые с помощью камеры устройства, в определенную конечную точку REST API multipart/form-data типа контента . Тестовые запросы, выполняющие это, независимо от того, загружается ли один файл или несколько файлов одновременно, никогда не завершаются неудачно.
Когда файлы загружаются через само приложение, загрузка кажется случайный сбой из-за ошибки UPLOAD_ERR_PARTIAL в журналах. Я проверил решение при добавлении заголовка (Соединение: закрыть) HTTP-заголовок, рекомендованный в нескольких источниках (например, здесь и здесь), но ошибка все равно иногда возникает.
Код Flutter, используемый для загрузки файла:

Код: Выделить всё

import 'package:http/http.dart' as http;
import 'package:http_parser/http_parser.dart';
import 'package:image_picker/image_picker.dart';

void main() {
Future uploadPhoto() async {
/// Build request route via base URI prefix
final Uri route = Uri.https(
"example.org",
"/namespace/v1/uploads",
);

var request = http.MultipartRequest(
'POST',
route,
);

/// Request Body
request.fields['upload_id'] = 'whatever';
request.fields['upload_description'] = 'you want';

/// For example purposes
final XFile? imageXFile;

/// imageXFile is valid and present and not null at this point
final String imagePath = 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;
default:

/// If the MIME-Type is not one of the allowed ones, interrupt with an
/// according error message
throw Exception("Invalid MIME");
}

/// Request Files
request.files.add(
await http.MultipartFile.fromPath(
'uploads[]',
imagePath,

/// The request occasionally fails without the provision of a filename
/// and mediaType
filename: 'upload.$imageExtension',
contentType: mediaType,
),
);

await request.send();
}
}

Я добавил теги php и apache, поскольку сервер, получающий запрос, представляет собой сервер Apache под управлением PHP 8.2 без каких-либо конкретных конфигураций сервера, поскольку это потенциально связано с конфигурациями сервера.. ?
Текущие настройки php.ini (релевантно):

Код: Выделить всё

post_max_size = 25000000
upload_max_filesize = 15000000
max_execution_time = 30
max_input_time = 60
Совершенно возможно, что в течение одной секунды от одного и того же клиента будет отправлено до 10 запросов (загрузка одного файла), но это самый худший сценарий / не более.
п>

Подробнее здесь: https://stackoverflow.com/questions/783 ... ial-in-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Apache»