HUAWEI Driveへのファイルアップロード手順
- HUAWEI Driveに接続する
- 親フォルダのオブジェクトを取得/生成する
- com.huawei.cloud.services.drive.model.Fileオブジェクトを作る
- ファイル名、mimeType、親フォルダを設定する
- アップロード対象ファイルを指定し、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
参考
- HMS:https://developer.huawei.com/consumer/jp/
- HMS Drive Kitの紹介:https://developer.huawei.com/consumer/jp/hms/huawei-drivekit
- HMS Drive Kitのドキュメント:https://developer.huawei.com/consumer/jp/doc/development/HMSCore-Guides/introduction-0000001050039630
- Huawei Developers:https://forums.developer.huawei.com/forumPortal/en/home
- Facebook Huawei Developersグループ:https://www.facebook.com/Huaweidevs/