79120857

Date: 2024-10-24 07:48:58
Score: 1
Natty:
Report link

I got answer

 static Future<String> fileUpload({required File file, OnUploadProgressCallback? onUploadProgress}) async {
//assert(file != null);

//debugger();

final url = '$baseUrl/api/file';

final fileStream = file.openRead();

int totalByteLength = file.lengthSync();

final httpClient = getHttpClient();

final request = await httpClient.postUrl(Uri.parse(url));

request.headers.set(HttpHeaders.contentTypeHeader, ContentType.binary);

request.headers.add("filename", file_util.basename(file.path));

request.contentLength = totalByteLength;

int byteCount = 0;
Stream<List<int>> streamUpload = fileStream.transform(
  StreamTransformer.fromHandlers(
    handleData: (data, sink) {
      byteCount += data.length;

      if (onUploadProgress != null) {
        onUploadProgress(byteCount, totalByteLength);
        // CALL STATUS CALLBACK;
      }

      sink.add(data);
    },
    handleError: (error, stack, sink) {
      debugPrint(error.toString());
    },
    handleDone: (sink) {
      sink.close();
      // UPLOAD DONE;
    },
  ),
);

await request.addStream(streamUpload);

final httpResponse = await request.close();

if (httpResponse.statusCode != 200) {
  throw Exception('Error uploading file');
} else {
  return await readResponseAsString(httpResponse);
}

}

Its working fine

https://github.com/salk52/Flutter-File-Upload-Download/blob/master/upload_download_app/lib/services/file_service.dart

Reasons:
  • Probably link only (1):
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Ravindra Yadav