Drive KitでデータをファイルとしてHUAWEI Driveにアップロードする方法


HUAWEI Driveへのファイルアップロード手順

  1. HUAWEI Driveに接続する
  2. 親フォルダのオブジェクトを取得/生成する
  3. com.huawei.cloud.services.drive.model.Fileオブジェクトを作る
  4. ファイル名、mimeType、親フォルダを設定する
  5. InputStreamを指定し、HUAWEI Driveのファイルアップロードリクエストを実行する

注意点
1. アップロード先にすでに同じファイル名のファイルが存在する場合、アップロード先のファイル名が勝手に{ファイル名}(次の番号).{拡張子}に置き換わります。

サンプル

private var drive: Drive? = null

fun saveBuffer(driveFilename: String, folderName: String, isApplicationData: Boolean, inputStream: InputStream, inputStreamLength: Long, mimeType: String): com.huawei.cloud.services.drive.model.File? {
    drive?.let { drive ->
        // ドライブにフォルダを作成
        var directoryCreated = getFile(folderName, true, isApplicationData)
        if (null == directoryCreated) {
            directoryCreated = createFolder(folderName, isApplicationData)
        }

        directoryCreated?.let { directoryCreated ->
            // 既存ファイルを削除
            val oldFile = getFile(driveFilename, false, isApplicationData)
            if (null != oldFile) {
                deleteFile(oldFile)
            }

            // 中身をアップロード
            val streamContent = InputStreamContent(mimeType, inputStream).apply {
                length = inputStreamLength
            }

            val content = com.huawei.cloud.services.drive.model.File()
                .setFileName(driveFilename)
                .setParentFolder(listOf(directoryCreated.id))

            val request = drive.files().create(content, streamContent)
            return request.execute()
        }
    }

    return null
}

GitHub

HMS Drive Kit Demo : https://github.com/Rei2020GitHub/MyPublicProject/tree/master/DriveKitDemo

参考