Когда файлы загружаются через само приложение, загрузка кажется случайный сбой из-за ошибки 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.ini (релевантно):
Код: Выделить всё
post_max_size = 25000000
upload_max_filesize = 15000000
max_execution_time = 30
max_input_time = 60
п>
Подробнее здесь: https://stackoverflow.com/questions/783 ... ial-in-php
Мобильная версия