putFile method

Future<String> putFile(
  1. String directory,
  2. Object file
)

Stores file in directory under a random 40-character name, with the extension its contents show it to have, and returns the path.

file is an XFile (from image_picker, file_picker or camera), a File, a file path, or bytes. The file is streamed, not loaded into memory.

final String path = await disk().putFile('avatars', photo);
// avatars/k3v0q…9q.jpg

Implementation

Future<String> putFile(String directory, Object file) async {
  final _FileSource source = _FileSource.of(file);
  final List<int> header = await _run(directory, () => source.header(32));
  final String generated = _randomName(40);
  final String? extension = source.extension(header);
  return putFileAs(
    directory,
    file,
    extension == null ? generated : '$generated.$extension',
  );
}