I have client and server application using Dart. Client sends song.m4a file to server. Server trying to read the file using shelf_multipart library.
While reading file, server reports FormatException: Missing extension byte(at offset 44).
Client code to send file is as below:`
Future<String> sendFile() async {
var uri = Uri(scheme: 'https',host: 'localhost',port: 8443, path: '/readSong');
// create multi-part file
// read file Content
var myFile = File(filename);
var mediaType = MediaType('application', 'octet-stream');
var fileContent = await myFile.readAsBytes();
var multipartFile = http.MultipartFile.fromBytes('file', fileContent,
filename: 'mySong.m4a', contentType: mediaType);
// make multipart request
var req = http.MultipartRequest('post', uri);
req.headers.addAll({
'company-name': 'myCompany',
'Content-Type': 'multipart/form-data',
});
req.fields.addAll({'author': 'meAuthor', 'file': 'song.m4a'});
req.files.add(multipartFile);
var response = await req.send();
print(response.toString());
}
Server side code as below:
dynamic readSong(shelf.Request req) async {
final parameters = <String, String>{
await for (final formData in req.multipartFormData)
formData.name: await formData.part.readString(),
};
//***** Error is generated in this loop ******
After reading the author field, the server reports the following error:
Format Exception: Missing extension byte (at offset 44))
MacOs Monterey 12.6.3