0
0

More than 3 years have passed since last update.

Drive Kitで端末のファイルをHUAWEI Driveにファイルをアップロードする方法

Last updated at Posted at 2021-08-23

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

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

注意点
1. ファイルサイズが20MB以下の場合、isDirectUploadEnabledをtrueにして、ダイレクトダウンロードが選べます。
2. ダイレクトダウンロードのサポート上限サイズは20MBですが、5MB以下の場合に使ったほうがよいです。
3. アップロード先にすでに同じファイル名のファイルが存在する場合、アップロード先のファイル名が勝手に{ファイル名}(次の番号).{拡張子}に置き換わります。

サンプル

companion object {
    private const val DIRECT_UPLOAD_MAX_SIZE = 20L * 1024L * 1024L
}

private var drive: Drive? = null

fun saveFile(localFile: File, driveFilename: String, folderName: String, isApplicationData: Boolean): 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 mimeTypeMap = MimeTypeMap.getSingleton()
            val extension = MimeTypeMap.getFileExtensionFromUrl(localFile.name)
            val mimeType = mimeTypeMap.getMimeTypeFromExtension(extension)
            val content = com.huawei.cloud.services.drive.model.File()
                .setFileName(driveFilename)
                .setMimeType(mimeType)
                .setParentFolder(listOf(directoryCreated.id))

            val isDirectUpload = localFile.length() < DIRECT_UPLOAD_MAX_SIZE
            val request = drive.files().create(content, FileContent(mimeType, localFile)).apply {
                mediaHttpUploader.isDirectUploadEnabled = isDirectUpload
            }

            return request.execute()
        }
    }

    return null
}

GitHub

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

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0