ファイルアップロード

ファイルのアップロード

表示タイプが「画像」、「動画」、「ファイル」のオブジェクト項目に対して、SDKよりファイルをアップロードすることができます。

ファイルをアップロードできるのは、データ管理ユーザー管理ユーザー詳細管理のオブジェクトです。

ファイルをアップロードする場合は、専用のファイルオブジェクトを指定して、オブジェクトを登録または更新してください。

// UIImageをJPEGのDataに変換
let jpegData = image.jpegData(compressionQuality: 1.0)

let objectData = RKZObjectData()
objectData.object_id = "shop"
objectData.code = "0001"
objectData.attributes = [
    // Data以外に、ファイル名とMIMEタイプを指定する
    "image": RKZUploadFileData(jpegData, fileName: "test.jpg", mimeType: RKZMimeTypeForUploadFileImageJPEG)
]

RKZService.sharedInstance().edit(objectData) { statusCode, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("更新完了")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}
// UIImageをJPEGのNSDataに変換
NSData *jpegData = UIImageJPEGRepresentation(image, 1.0);

RKZObjectData *objectData = [[RKZObjectData alloc] init];
objectData.object_id = @"shop";
objectData.code = @"0001";
objectData.attributes = @{
    // NSData以外に、ファイル名とMIMEタイプを指定する
    @"image": [[RKZUploadFileData alloc] initWithFile:jpegData fileName:@"test.jpg" mimeType:RKZMimeTypeForUploadFileImageJPEG]
};

[RKZService.sharedInstance editData:objectData withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"更新完了");
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];
// Uriが指すファイルを読み取って、ByteArrayに変換
val bytes = readAllBytes(uri)

val objectData = RKZObjectData()
objectData.objectId = "shop"
objectData.code = "0001"
objectData.attributes = mapOf(
    // ByteArray以外に、ファイル名とMIMEタイプを指定する
    "image" to RKZUploadFile(bytes, "test.jpg", RKZUploadFile.RKZ_MIME_TYPE_FOR_UPLOAD_FILE_IMAGE_JPEG)
)

RKZClient.getInstance().editData(objectData) { statusCode, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        Log.d(TAG, "更新完了")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}
// Uriが指すファイルを読み取って、byte[]に変換
byte[] bytes = readAllBytes(uri);

RKZObjectData objectData = new RKZObjectData();
objectData.setObjectId("shop");
objectData.setCode("0001");
// byte[]以外に、ファイル名とMIMEタイプを指定する
objectData.setAttributesValue("image", new RKZUploadFile(bytes, "test.jpg", RKZUploadFile.RKZ_MIME_TYPE_FOR_UPLOAD_FILE_IMAGE_JPEG));

RKZClient.getInstance().editData(objectData, new OnEditRKZObjectDataListener() {
    @Override
    public void onEditRKZObjectData(String s, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            Log.d(TAG, "更新完了");
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});
// フォームから画像ファイルのFileを取得
const file = document.querySelector('input[type=file]').files[0]
const reader = new FileReader()

reader.addEventListener('load', function () {
  // FileをBase64の文字列に変換
  var base64String = reader.result.split(',')[1]

  var data = {
    object_id: 'shop',
    code: '0001',
    attributes: {
      image: RKZFileType.jpg('test.jpg', base64String)
    }
  }
  RKZClient.editData(data, function() {
    // 成功時
    console.debug('更新完了')
  }, function(error) {
    // 失敗時
    console.error('status_code:', error.status_code)
    console.error('message:', error.message)
  })
})

reader.readAsDataURL(file)
// ファイルを読み取って、Uint8Listに変換
final file = File('<ファイルパス>');
final bytes = await file.readAsBytes();

final data = Data();
data.objectId = 'shop';
data.code = '0001';
data.attributes = {
  // Uint8List以外に、ファイル名とMIMEタイプを指定する
  'image': RKZFile(data: bytes, name: 'test.jpg', mimeType: MimeType.jpeg)
};
await RKZClient.instance.editData(data);

JavaScriptの場合、プラットフォームごとにファイルオブジェクトの作成方法が異なります。

// フォームから画像ファイルのFileを取得(Blobも指定可能)
const file = document.querySelector('input[type=file]').files[0]
// ファイル名(省略した場合、BlobまたはFileのファイル名が送信される)
const fileName = 'test.jpg'

await RKZ.Data.edit({
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: new RKZ.File(file, fileName),
  },
})
// 画像ファイルのstream.Readableを取得(Bufferも指定可能)
const file = fs.createReadStream('test.jpg')
// ファイル名
const fileName = 'test.jpg'

await RKZ.Data.edit({
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: new RKZ.File(file, fileName),
  },
})
// ファイルオブジェクト
const file = {
  uri: '<ファイルURL>', // ファイルURL
  name: 'test.jpg', // ファイル名
  type: 'image/jpeg', // ファイルのMIMEタイプ
}
await RKZ.Data.edit({
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: new RKZ.File(file, file.name),
  },
})

注意

アップロードできるファイルサイズとファイル形式※は制限があります。制限を緩和したい場合は、製品サイトopen in new windowよりお問い合わせください。

※標準だと次の拡張子が許可されています

  • 画像:gif、jpg、jpeg、png(1ファイルあたり、最大4MB)
  • 動画:mp4、3gp、m4a(1ファイルあたり、最大40MB)
  • ファイル:pdf、xls、xlsx、doc、docx、ppt、pptx、mp3、m4a、mp4(1ファイルあたり、最大40MB)

ファイルの削除

ファイルを削除する場合は、空のファイルオブジェクトを指定して、オブジェクトを更新してください。

let objectData = RKZObjectData()
objectData.object_id = "shop"
objectData.code = "0001"
objectData.attributes = [
    "image": RKZUploadFileData.empty()
]

RKZService.sharedInstance().edit(objectData) { statusCode, responseStatus in
    if responseStatus.isSuccess {
        // 成功時
        print("更新完了")
    } else {
        // 失敗
        print("statusCode:", responseStatus.statusCode.rawValue)
        print("message:", responseStatus.message ?? "")
    }
}




 












RKZObjectData *objectData = [[RKZObjectData alloc] init];
objectData.object_id = @"shop";
objectData.code = @"0001";
objectData.attributes = @{
    @"image": [RKZUploadFileData empty]
};

[RKZService.sharedInstance editData:objectData withBlock:^(RKZApiStatusCode statusCode, RKZResponseStatus * _Nonnull responseStatus) {
    if (responseStatus.isSuccess) {
        // 成功時
        NSLog(@"更新完了");
    } else {
        // 失敗
        NSLog(@"statusCode: %ld", responseStatus.statusCode);
        NSLog(@"message: %@", responseStatus.message);
    }
}];




 












val objectData = RKZObjectData()
objectData.objectId = "shop"
objectData.code = "0001"
objectData.attributes = mapOf(
    "image" to RKZUploadFile.empty()
)

RKZClient.getInstance().editData(objectData) { statusCode, rkzResponseStatus ->
    if (rkzResponseStatus.isSuccess) {
        Log.d(TAG, "更新完了")
    } else {
        // 失敗
        Log.e(TAG, "statusCode: ${rkzResponseStatus.statusCode}")
        Log.e(TAG, "message: ${rkzResponseStatus.message}")
    }
}




 











RKZObjectData objectData = new RKZObjectData();
objectData.setObjectId("shop");
objectData.setCode("0001");
objectData.setAttributesValue("image", RKZUploadFile.empty());

RKZClient.getInstance().editData(objectData, new OnEditRKZObjectDataListener() {
    @Override
    public void onEditRKZObjectData(String s, RKZResponseStatus rkzResponseStatus) {
        if (rkzResponseStatus.isSuccess()) {
            Log.d(TAG, "更新完了");
        } else {
            // 失敗
            Log.e(TAG, "statusCode: " + rkzResponseStatus.getStatusCode());
            Log.e(TAG, "message: " + rkzResponseStatus.getMessage());
        }
    }
});



 













var data = {
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: RKZFileType.nothing
  }
}
RKZClient.editData(data, function() {
  // 成功時
  console.debug('更新完了')
}, function(error) {
  // 失敗時
  console.error('status_code:', error.status_code)
  console.error('message:', error.message)
})




 










await RKZ.Data.edit({
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: RKZ.File.empty(),
  },
})




 


final data = Data();
data.objectId = 'shop';
data.code = '0001';
data.attributes = {
  'image': RKZFile.empty()
};

await RKZClient.instance.editData(data);




 




React Nativeの場合は、RKZ.File.emptyは使用できません。かわりに以下の様にして、空のファイル情報を指定してください。

const file = {
  uri: '<ファイルURL>', // 0バイトのファイルURLを指定する
  name: '', // ファイル名は空文字列
  type: 'application/octet-stream', // MIMEタイプはoctec-stream
}
await RKZ.Data.edit({
  object_id: 'shop',
  code: '0001',
  attributes: {
    image: new RKZ.File(file, ''), // ファイル名は空文字列
  },
})