putFile method
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',
);
}