OneDrive に画像をアップロードすると 2048 × 2048 px 以下になる件
Live SDK を利用すれば以下のように簡単に OneDrive にファイルをアップロードできるんですが・・・
var authClient = new LiveAuthClient(); var login = await authClient.LoginAsync(new List<string>() { "wl.skydrive", "wl.skydrive_update" }); if (LiveConnectSessionStatus.Connected.Equals(login.Status)) { this.client = new LiveConnectClient(login.Session); var operationResult = await this.client.BackgroundUploadAsync( "me/skydrive/my_documents", file.Name, file, OverwriteOption.Overwrite); dynamic result = operationResult.Result; }
デフォルトだと画像ファイルの縦幅または横幅が 2048 px を超える場合、次のように縮小されてしまいます;
そのままのサイズをアップロードしたい!という場合どうすればよいか・・・
探してみたら OneDrive の REST API にやり方が書いてありました
既定では、アップロードされた写真のサイズが 2048 × 2048 ピクセルより大きい場合、OneDrive は、写真がこの 2048 × 2048 ピクセルのサイズ制限内に収まるように自動的に写真を縮小します。この動作を変更するには、downsize_photo_uploads クエリ文字列パラメーターを false に設定します。たとえば、POST の場合は /FOLDER_ID/files?downsize_photo_uploads=false、PUT の場合は /FOLDER_ID/files/FILENAME?downsize_photo_uploads=false と指定します。
Live SDK の場合クエリパラメータなんて引数はありません・・・しかし無理やり次のようにやってみたら
var operationResult = await this.client.BackgroundUploadAsync( "me/skydrive/my_documents?downsize_photo_uploads=false", file.Name, file, OverwriteOption.Overwrite);
できました・・・ちょっとわかりづらい;