アップロード
Object Body としてファイルをアップロードすると、Object とファイルを紐付けて管理できます。
JavaScript SDK からは、各 Object Body は 100 MB までのアップロードが可能です(サーバーの安定動作のため、1 回のアップロードリクエストは 1 分程度までを目安としてください)。Object Body のアップロードには XMLHttpRequest Level 2, FileReader
および Blob
のサポートが必要です。
JavaScript SDK の v2 系では、progress コールバックによるアップロード進捗状況の確認ができます。
(SDK v3 系ではコールバック自体が未サポートのため、この機能は利用できません)
Server Code では Object Body のアップロードが利用できません。
Object の Object Body をアップロードする例を以下に挙げます。
-
// Create a KiiObject in an application-scope bucket. var object = Kii.bucketWithName("AppBucket").createObject(); // Save the KiiObject. object.save().then( function(theObject) { // Define a Blob object. You can get a Blob object from an input to an HTML form. var srcData = new Blob(["Hello Blob"], {type: "text/plain"}); // Start uploading. return theObject.uploadBody(srcData).then( function(theObject) { // Upload succeeded. } ).catch( function(error) { var theObject = error.target; var errorString = error.message; // Handle the error. } ) } );
-
// Create a KiiObject in an application-scope bucket. var object = Kii.bucketWithName("AppBucket").createObject(); // Save the KiiObject. object.save().then( function(theObject) { // Define a Blob object. You can get a Blob object from an input to an HTML form. var srcData = new Blob(["Hello Blob"], {type: "text/plain"}); // Start uploading. return theObject.uploadBody(srcData, { progress: function (oEvent) { if (oEvent.lengthComputable) { // Get the upload progress. You can update the progress bar with this function. var percentComplete = oEvent.loaded / oEvent.total * 100; console.log("upload percentComplete: " + percentComplete); } } }); } ).then( function(theObject) { // Upload succeeded. } ).catch( function(error) { var theObject = error.target; var errorString = error.message; // Handle the error. } );
-
// Create a KiiObject in an application-scope bucket. var object = Kii.bucketWithName("AppBucket").createObject(); // Save the KiiObject. object.save({ success: function(theObject) { // Define a Blob object. You can get a Blob object from an input to an HTML form. var srcData = new Blob(["Hello Blob"], {type: "text/plain"}); // Start uploading. theObject.uploadBody(srcData, { progress: function (oEvent) { if (oEvent.lengthComputable) { // Get the upload progress. You can update the progress bar with this function. var percentComplete = oEvent.loaded / oEvent.total * 100; console.log("upload percentComplete: " + percentComplete); } }, success: function(theObject) { // Upload succeeded. }, failure: function(theObject, errorString) { // Handle the error. } }); }, failure: function(theObject, errorString) { // Handle the error. } });
ここでは以下の処理を実施しています。
- (必要に応じて)KiiObject にキーと値のペアをセットします。ファイル名、ファイルサイズ、Object Body の有無などを登録しておくことができます。
save()
メソッドを実行して、オブジェクトを保存します。- アップロード対象ファイルの Blob を作成します。
uploadBody()
メソッドを実行して、ファイルのアップロードを開始します。- (SDK v2 系のみ)progress コールバックが転送の進捗状況に応じて呼び出されます。転送サイズが小さい場合は、1 回目の呼び出しで 100% の進捗を示すことがあります。
uplaodBody()
メソッドを使用する場合は、事前に save()
メソッドによって Kii Cloud 上に KiiObject を作成しておく必要があります。
Content-Type は "type/subtype" の形式で指定します。Kii Cloud に送信された Content-Type は、ダウンロード時や、公開された Object Body をブラウザで参照するときに使用されます。