Beispiel #1
0
        /// <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)));
        }
Beispiel #2
0
        /// <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();
 }