putRequestFile method

Future<String> putRequestFile(
  1. String folder,
  2. RequestFile requestFile
)

store the request file into storage, with a new uuid file name. a temp file on the local disk is moved, not read into memory.

RequestFile file = req.input('avatar');
String path = await Storage().putRequestFile('images/avatar', file);

Implementation

Future<String> putRequestFile(String folder, RequestFile requestFile) async {
  String? extension = requestFile.extension.isEmpty
      ? await _sniff(requestFile.stream())
      : requestFile.extension;
  String key = _newKey(folder, extension);
  Disk target = use();
  DriverContract driver = target.driver;
  if (driver is LocalDriver) {
    await requestFile.moveTo(driver.pathFor(target.normalizer.key(key)));
  } else {
    await target.putStream(key, requestFile.stream());
  }
  return '/$key';
}