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(StorageUtils.getMD5(fileBytes) + fileName);
    late String folderPath;

    if (usageType == "content") {
      if (fileType.contains("image")) {
        folderPath = "content/image/";
      } else if (fileType.contains("video")) {
        folderPath = "content/video/";
        makeThumbnail = true;
      } else {
        folderPath = "content/etc/";
        if (fileType.contains("pdf")) makeThumbnail = true;
      }
    } else if (usageType == "bookThumbnail") {
      folderPath = "book/thumbnail/";
    } else if (usageType == "profile") {
      folderPath = "profile/";
    } else if (usageType == "banner") {
      folderPath = "banner/";
    } else {
      folderPath = "etc/";
    }

    var file = _storage!.ref().child("$bucketId/$folderPath$fileName");
    var alreadyFile = await getFileData(file.fullPath);

    if(alreadyFile == null) {
      await file.putData(fileBytes);
      await file.updateMetadata(SettableMetadata(contentType: fileType));
      if (makeThumbnail) await createThumbnail(folderPath, fileName, fileType, bucketId);
      return await getFileData(file.fullPath);
    }
    return alreadyFile;
  } catch (error) {
    logger.severe("error at Storage.uploadFile >>> $error");
  }
  return null;
}