file_streamer 0.1.0 copy "file_streamer: ^0.1.0" to clipboard
file_streamer: ^0.1.0 copied to clipboard

A zero-retention, stream-first file access library for Dart & Flutter.

example/main.dart

import 'dart:io';
import 'dart:typed_data';
import 'package:file_streamer/file_streamer.dart';
import 'package:http/http.dart' as http;

Future<void> main() async {
  // 1. Pick files
  final result = await FileStreamer.pickFiles(
    const PickerOptions(allowMultiple: true, filters: [FileTypeFilter.images]),
  );

  if (result.isEmpty) return;

  // 2 + 3. Stream and upload each file
  for (final file in result.files) {
    stdout.writeln('Uploading: ${file.name} (${file.size} bytes)');

    final stream = FileStreamer.openReadStream(
      file,
      options: const ReadStreamOptions(chunkSize: 512 * 1024), // 512 KB
    );

    final request = http.StreamedRequest(
      'POST',
      Uri.parse('https://httpbin.org/post'),
    );

    request.headers['Content-Type'] = 'application/octet-stream';
    request.contentLength = file.size;

    int uploaded = 0;

    final progressStream = stream.map((Uint8List chunk) {
      uploaded += chunk.length;
      final progress = file.size > 0
          ? (uploaded / file.size * 100).toStringAsFixed(1)
          : '0.0';

      stdout.writeln('${file.name}: $progress%');
      return chunk;
    });

    final responseFuture = request.send();

    await request.sink.addStream(progressStream);
    await request.sink.close();

    final response = await responseFuture;
    await response.stream.drain();

    stdout.writeln('${file.name}: done (${response.statusCode})\n');
  }
}
1
likes
160
points
110
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A zero-retention, stream-first file access library for Dart & Flutter.

Repository (GitHub)
View/report issues

Topics

#read #load #upload #stream #wasm

License

MIT (license)

Dependencies

file_picker, mime, web

More

Packages that depend on file_streamer