/// <summary> /// 上传图片至OneDrive /// </summary> /// <param name="image">图片文件</param> /// <returns></returns> public async Task <OneDriveImage> UploadImage(StorageFile image, OneDriveImageGroup group) { if (_appFolder == null) { throw new UnauthorizedAccessException("You need to complete OneDrive authorization before you can upload the image"); } var imageFolder = await GetImgSaveFolder(); var per = await image.GetBasicPropertiesAsync(); string fileId = ""; string name = ""; string extension = Path.GetExtension(image.Path); bool isAutoRename = Convert.ToBoolean(AppTools.GetLocalSetting(AppSettings.AutoRename, "True")); string fileName = isAutoRename ? Guid.NewGuid() + extension : image.Name.Trim(); OneDriveStorageFile cre = null; try { // 这里要对文件大小进行判断,以4MB为分水岭,需要用不同的办法上传 if (per.Size < 4 * 1024 * 1024) { using (var stream = await image.OpenReadAsync()) { cre = await imageFolder.StorageFolderPlatformService.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting, stream); fileId = cre.OneDriveItem.Id; name = cre.OneDriveItem.Name; } } else { using (var stream = await image.OpenReadAsync()) { cre = await imageFolder.StorageFolderPlatformService.UploadFileAsync(fileName, stream, CreationCollisionOption.ReplaceExisting, 320 * 1024); fileId = cre.OneDriveItem.Id; name = cre.OneDriveItem.Name; } } string link = LinkConvert(fileId); var item = new OneDriveImage(name, await AppTools.ConvertFileToImage(image), group, link, fileId); return(item); } catch (Exception) { return(null); } }
/// <summary> /// 修改某图片名 /// </summary> /// <param name="image">图片</param> /// <param name="newName">新名字</param> /// <returns></returns> public async Task <string> RenameImage(OneDriveImage image, string newName) { if (_appFolder == null) { throw new UnauthorizedAccessException("You need to complete OneDrive authorization before you can get this file"); } var imageFolder = await GetImgSaveFolder(); try { var file = await imageFolder.GetFileAsync(image.ImageName); await file.RenameAsync(newName); return(newName); } catch (Exception) { return(image.ImageName); } }
/// <summary> /// 删除图片 /// </summary> /// <param name="image">图片信息</param> /// <returns></returns> public async Task <bool> DeleteImage(OneDriveImage image) { if (_appFolder == null) { throw new UnauthorizedAccessException("You need to complete OneDrive authorization before you can upload the image"); } var imageFolder = await GetImgSaveFolder(); var file = await imageFolder.StorageFolderPlatformService.CreateFileAsync(image.ImageName, CreationCollisionOption.OpenIfExists); if (file != null) { try { await file.DeleteAsync(); } catch (Exception) { return(false); } } return(true); }