/// <summary> /// 复制文件(两个文件需要在同一账号下) /// 对于小于1G的文件(不支持跨地域拷贝。例如,不支持将杭州存储空间里的文件拷贝到青岛),另外需将分片设置为4M,其他分类不支持 /// </summary> /// <param name="request"></param> /// <returns></returns> public CopyFileResultDto CopyTo(CopyFileParam request) { return(ToolCommon.GetResponse(() => { new CopyFileParamValidator().Validate(request).Check(HttpStatus.Err.Name); var zone = Core.Tools.GetZone(_aLiYunConfig, request.PersistentOps.Zone, () => ZoneEnum.HangZhou); var client = _aLiYunConfig.GetClient(zone); var bucket = Core.Tools.GetBucket(_aLiYunConfig, request.PersistentOps.Bucket); var targetBucket = Core.Tools.GetBucket(_aLiYunConfig, request.PersistentOps.Bucket, request.OptBucket); if (!request.IsForce) { var newBasePersistentOps = request.PersistentOps.Clone(); newBasePersistentOps.Bucket = request.OptBucket; var existRet = this.Exist(new ExistParam(request.OptKey, newBasePersistentOps)); if (existRet.State) { return new CopyFileResultDto(false, request.SourceKey, "复制失败,文件已存在"); } } if (Core.Tools.GetChunkUnit(_aLiYunConfig, request.PersistentOps.ChunkUnit).Id != ChunkUnit.U4096K.Id) { return CopySmallFile(client, bucket, request.SourceKey, targetBucket, request.OptKey); } return CopyBigFile(client, bucket, request.SourceKey, targetBucket, request.OptKey); }, message => new CopyFileResultDto(false, request.SourceKey, message))); }
/// <summary> /// 复制文件(两个文件需要在同一账号下) /// </summary> /// <param name="copyFileParam">复制到新空间的参数</param> /// <returns></returns> public CopyFileResultDto CopyTo(CopyFileParam copyFileParam) { new CopyFileParamValidator().Validate(copyFileParam).Check(HttpStatus.Err.Name); HttpResult copyRet = GetBucketManager().Copy(copyFileParam.SourceBucket, copyFileParam.SourceKey, copyFileParam.OptBucket, copyFileParam.OptKey, copyFileParam.IsForce); var res = copyRet.Code == (int)HttpCode.OK; return(new CopyFileResultDto(res, copyFileParam.FileId, res ? "复制成功" : copyRet.Text)); }
/// <summary> /// 复制文件(两个文件需要在同一账号下) /// </summary> /// <param name="copyFileParam">复制到新空间的参数</param> /// <returns></returns> public CopyFileResultDto CopyTo(CopyFileParam copyFileParam) { new CopyFileParamValidator().Validate(copyFileParam).Check(HttpStatus.Err.Name); HttpResult copyRet = GetBucketManager(copyFileParam.PersistentOps).Copy( Core.Tools.GetBucket(QiNiuConfig, copyFileParam.PersistentOps.Bucket), copyFileParam.SourceKey, Core.Tools.GetBucket(QiNiuConfig, copyFileParam.PersistentOps.Bucket, copyFileParam.OptBucket), copyFileParam.OptKey, copyFileParam.IsForce); var res = copyRet.Code == (int)HttpCode.OK; return(new CopyFileResultDto(res, copyFileParam.SourceKey, res ? "复制成功" : copyRet.Text)); }
/// <summary> /// 复制文件(两个文件需要在同一账号下) /// </summary> /// <param name="copyFileParam">复制到新空间的参数</param> /// <returns></returns> public CopyFileResultDto CopyTo(CopyFileParam copyFileParam) { throw new NotImplementedException(); }