tus_client_dart 2.2.2 copy "tus_client_dart: ^2.2.2" to clipboard
tus_client_dart: ^2.2.2 copied to clipboard

outdated

A tus client for dart allowing resumable uploads using the tus protocol.

A tus client #

Pub Version Build Status


A tus client in pure dart. Resumable uploads using tus protocol Forked from tus_client

tus is a protocol based on HTTP for resumable file uploads. Resumable means that an upload can be interrupted at any moment and can be resumed without re-uploading the previous data again. An interruption may happen willingly, if the user wants to pause, or by accident in case of a network issue or server outage.

Usage #

import 'package:cross_file/cross_file.dart' show XFile;

// File to be uploaded
final file = XFile("/path/to/my/pic.jpg");

// Create a client
final client = TusClient(
    Uri.parse("https://master.tus.io/files/"),
    file,
    store: TusMemoryStore(),
);

// Starts the upload
await client.upload(
    onComplete: () {
        print("Complete!");

        // Prints the uploaded file URL
        print(client.uploadUrl.toString());
    },
    onProgress: (double progress, Duration estimate, TusClient client) {
        print("Progress: $progress, Estimated time: ${estimate.inSeconds}");
    },
);

Using Persistent URL Store #

This is only supported on Flutter Android, iOS, desktop and web. You need to add to your pubspec.yaml:

import 'package:path_provider/path_provider.dart';

//creates temporal directory to store the upload progress
final tempDir = await getTemporaryDirectory();
final tempDirectory = Directory('${tempDir.path}/${gameId}_uploads');
if (!tempDirectory.existsSync()) {
    tempDirectory.createSync(recursive: true);
}

// Create a client
final client = TusClient(
    Uri.parse("https://example.com/tus"),
    file,
    store: TusFileStore(tempDirectory),
);

// Start upload
// Don't forget to delete the tempDirectory
await client.upload();

Adding Extra Headers #

final client = TusClient(
    Uri.parse("https://master.tus.io/files/"),
    file,
    headers: {"Authorization": "..."},
);

Adding extra data #

final client = TusClient(
    Uri.parse("https://master.tus.io/files/"),
    file,
    metadata: {"for-gallery": "..."},
);

Changing chunk size #

The file is uploaded in chunks. Default size is 512KB. This should be set considering speed of upload vs device memory constraints

final client = TusClient(
    Uri.parse("https://master.tus.io/files/"),
    file,
    maxChunkSize: 10 * 1024 * 1024,  // chunk is 10MB
);

Pausing upload #

Pausing upload can be done after current uploading in chunk is completed.

final client = TusClient(
    Uri.parse("https://master.tus.io/files/"),
    file
);

// Pause after 5 seconds
Future.delayed(Duration(seconds: 5)).then((_) =>client.pause());

// Starts the upload
await client.upload(
    onComplete: () {
        print("Complete!");
    },
    onProgress: (double progress, Duration estimate, TusClient client) {
        print("Progress: $progress, Estimated time: ${estimate.inSeconds}");
    },
);

Example #

For an example of usage in a Flutter app (using file picker) see: /example

Maintainers #

14
likes
0
pub points
87%
popularity

Publisher

verified publishertsasovsky.com

A tus client for dart allowing resumable uploads using the tus protocol.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

cross_file, http

More

Packages that depend on tus_client_dart