ファイルアップロード
ファイルのアップロード
表示タイプが「画像」、「動画」、「ファイル」のオブジェクト項目に対して、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),
},
})
注意
アップロードできるファイルサイズとファイル形式※は制限があります。制限を緩和したい場合は、製品サイトよりお問い合わせください。
※標準だと次の拡張子が許可されています
- 画像: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, ''), // ファイル名は空文字列
},
})