uploadAvatar method
Uploads a new profile photo to NTUT Portal, replacing the current one.
oldFilename should be the current avatar filename
(from UserDto.avatarFilename, or empty string if none).
Returns the new avatar filename assigned by the server.
Implementation
Future<String> uploadAvatar(Uint8List imageBytes, String? oldFilename) async {
final response = await _portalDio.post(
'photoUpload.do',
queryParameters: {
'uploadQuota': '20', // max file size in MB
// current avatar filename for server-side cleanup
'ldapPhoto': oldFilename ?? '',
},
data: FormData.fromMap({
'file[]': MultipartFile.fromBytes(
imageBytes,
filename: 'avatar.jpg', // required by server
contentType: DioMediaType('application', 'octet-stream'),
),
}),
);
final body = jsonDecode(response.data);
return body['ldapPhoto'];
}