事前チェック
事前チェック
事前チェックAPIを使用すると、アプリケーションでアップロードを開始する前にそのファイルがBoxに受け入れられるかどうかを確認できます。このAPIは、新しいファイルにも、既存ファイルの新しいバージョンのアップロードにも使用できます。
チェックリスト
事前チェックでは、ファイルが実際にアップロードされるときと同じように、以下のすべてのチェックが実行されます。
- フォルダにアップロードするアプリケーションおよびユーザーの権限
- ファイル名の競合
- ファイルサイズの上限や制限
- フォルダおよびファイルの名前に関する制約事項
- フォルダおよびアカウントのストレージクォータ
新しいファイルのチェック
新しいファイルのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ(バイナリコンテンツを除く)を使用してOPTIONS /files/content
APIを呼び出してください。
curl -X OPTIONS https://upload.box.com/api/2.0/files/content \
-H 'Authorization: Bearer <ACCESS_TOKEN>" '
-H "Content-Type: multipart/form-data" \
-F attributes='{"name":"Photo.jpg", "parent":{"id":"11446498"}}'
String fileName = "My Doc.pdf";
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
try {
folder.canUpload(fileName, 98734576);
// If the file upload would not have succeeded, it will not be attempted
folder.uploadFile(fileContents, fileName);
} catch (BoxAPIException ex) (
)
// Verify that uploading a 200MB file named "Preso.ppt" to folder 12345 would succeed
client.files.preflightUploadFile(
'12345',
{
name: 'Preso.ppt',
size: 200000000
},
null,
callback
);
新しいファイルバージョンのチェック
新しいファイルバージョンのチェックを実行するには、実際のファイルをアップロードする場合と同じパラメータ(バイナリコンテンツを除く)を使用してOPTIONS /files/:id/content
APIを呼び出してください。
curl -X OPTIONS https://upload.box.com/api/2.0/files/content \
-H 'Authorization: Bearer <ACCESS_TOKEN>" '
-H "Content-Type: multipart/form-data" \
-F attributes='{"name":"Photo.jpg", "parent":{"id":"11446498"}}'
// Check if uploading a larger version of this file will succeed
client.files.preflightUploadNewFileVersion('87646', {size: 300000000}, null, callback);
チェックと分割アップロード
分割アップロードを実行する場合、アップロードセッションの作成でも事前チェックが実行されるため、事前チェックは必須ではありません。
応答コード
API呼び出しで問題が検出されると、HTTP 409 Conflict
ステータスコードとともに可能性のある競合を説明するメッセージが返されます。問題が検出されなかった場合、HTTP 200 OK
ステータスコードが返され、アップロードを続行できます。
200 OK
応答は、アップロード呼び出しが実際に成功することを保証するものではありません。事前チェックによりアップロードの失敗が99%以上削減されることが実証されていますが、ファイルのアップロード時に同時実行の問題が発生する可能性は残っています。
非常にアクティブで、クォータ制限に近づいているフォルダ、一般的なファイル名、およびアカウントの場合、事前チェックで200 OK
が返されたとしても、実際のアップロード中に競合が発生する可能性があります。
応答の本文
事前チェックでは多くの場合、競合が検出されるとAPI応答で有益なデータが返されます。たとえば名前の競合が検出された場合、アプリケーションではエラー応答で返されるSHA-1
を使用して、アップロードしようとしているファイルと既存ファイルが同一であるかどうかを確認できます。