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 = bucketId.isEmpty ? myConfig!.serverConfig!.storageConnInfo.bucketId : bucketId;
    fileName = fileName.replaceAll(RegExp(r'[^a-zA-Z0-9가-힣.]'), "_");
    String folderName = "";
    if (usageType == "content") {
      if (fileType.contains("image")) {
        folderName = "$usageType/image/";
      } else if (fileType.contains("video")) {
        makeThumbnail = true;
        folderName = "$usageType/video/";
      } else {
        if (fileType.contains("pdf")) makeThumbnail = true;
        folderName = "$usageType/etc/";
      }
    } else if (usageType == "profile") {
      folderName = "profile/";
    } else if (usageType == "banner") {
      folderName = "banner/";
    } else if (usageType == "bookThumbnail") {
      folderName = "book/thumbnail/";
    }

    var target = _storage!.ref().child("$bucketId/$folderName$fileName");
    var uploadFile = await getFileData(target.fullPath);

    if (uploadFile != null) {
      if (uploadFile.thumbnailUrl == "" && makeThumbnail) {
        await createThumbnail(folderName, fileName, fileType, bucketId);
        return await getFileData(uploadFile.id);
      }
      return uploadFile;
    } else {
      await target.putData(fileBytes);
      await target.updateMetadata(SettableMetadata(contentType: fileType));
      if (makeThumbnail) {
        await createThumbnail(folderName, fileName, fileType, bucketId);
      }
      return await getFileData(target.fullPath);
    }
  } catch (error) {
    logger.severe("error during Storage.uplaodFile >> $error");
  }
  return null;
}