uploadFile method

  1. @override
Future<FileModel?> uploadFile(
  1. String fileName,
  2. String fileType,
  3. Uint8List fileBytes, {
  4. bool makeThumbnail = false,
  5. String usageType = "content",
  6. String? bucketId,
})
override

Implementation

@override
Future<FileModel?> uploadFile(String fileName, String fileType, Uint8List fileBytes, {bool makeThumbnail = false, String usageType = "content", String? bucketId}) async {
  try {
    await initialize();

    bucketId ??= myConfig!.serverConfig.storageConnInfo.bucketId;
    fileName = StorageUtils.sanitizeString(fileName);
    late String fileId;

    if(fileType.contains("image")) {
      fileId = "img-";
    } else if (fileType.contains("video")) {
      fileId = "vid-";
      makeThumbnail = true;
    } else {
      fileId = "etc-";
      if(fileType.contains("pdf")) makeThumbnail = true;
    }
    fileId += StorageUtils.getMD5(fileBytes);

    var file = await getFileData(fileId, bucketId: bucketId);
    if(file != null) {
      if((file.thumbnailUrl.isEmpty || file.thumbnailUrl == file.url) && makeThumbnail) {
        await createThumbnail(fileId, fileName, fileType, bucketId);
      } else {
        return file;
      }
    } else {
      await _storage!.createFile(bucketId: bucketId, fileId: fileId, file: InputFile.fromBytes(bytes: fileBytes, filename: fileName));
      if(makeThumbnail) await createThumbnail(fileId, fileName, fileType, bucketId);
    }
    return await getFileData(fileId, bucketId: bucketId);
  } catch (error) {
    logger.severe("error at Storage.uploadFile >>> $error");
  }
  return null;
}