Exemplo n.º 1
0
        public List <string> MoveFile(string[] sourcePath, string dectPath)
        {
            List <string> list = new List <string>();

            foreach (string item in sourcePath)
            {
                var metadata = new ObjectMetadata();

                string fileName = Path.GetFileName(item);

                var req = new CopyObjectRequest(BucketName, item, BucketName, dectPath + fileName)
                {
                    NewObjectMetadata = metadata
                };
                try
                {
                    client.CopyObject(req);
                    client.DeleteObject(BucketName, item);
                    list.Add(item);
                }
                catch (Exception ee)
                {
                    logger.Error("MoveFile Error:" + ee);
                }
            }
            return(list);
        }
        public static void CopyObject(string sourceBucket, string sourceKey, string targetBucket, string targetKey)
        {
            try
            {
                var metadata = new ObjectMetadata();
                metadata.AddHeader("mk1", "mv1");
                metadata.AddHeader("mk2", "mv2");
                var req = new CopyObjectRequest(sourceBucket, sourceKey, targetBucket, targetKey)
                {
                    NewObjectMetadata = metadata
                };
                client.CopyObject(req);

                Console.WriteLine("Copy object succeeded");
            }
            catch (OssException ex)
            {
                Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
                                  ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed with error info: {0}", ex.Message);
            }
        }
Exemplo n.º 3
0
 public string CopyObject(string bucketName, string source, string target)
 {
     client.CopyObject(new CopyObjectRequest(bucketName, source, bucketName, target)
     {
         NewObjectMetadata = new ObjectMetadata()
     });
     return("true");
 }
Exemplo n.º 4
0
 public bool Copy(string filekey)
 {
     try
     {
         CopyObjectRequest cp = new CopyObjectRequest("jingge2014", filekey, "jingge2015", filekey);
         client.CopyObject(cp);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
Exemplo n.º 5
0
        public void CopyTo(OssClient client, FileConfig target, ObjectMetadata metaData = null)
        {
            TkDebug.AssertArgumentNull(client, "client", this);
            TkDebug.AssertArgumentNull(target, "target", this);

            var req = new CopyObjectRequest(BucketName, ObjectName, target.BucketName, target.ObjectName);

            if (metaData != null)
            {
                req.NewObjectMetadata = metaData;
            }
            client.CopyObject(req);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 拷贝小文件
        /// </summary>
        /// <param name="client"></param>
        /// <param name="sourceBucket">源空间</param>
        /// <param name="sourceKey">源文件</param>
        /// <param name="optBucket">目标空间</param>
        /// <param name="optKey">目标文件</param>
        /// <returns></returns>
        private CopyFileResultDto CopySmallFile(OssClient client, string sourceBucket, string sourceKey,
                                                string optBucket, string optKey)
        {
            var req = new CopyObjectRequest(sourceBucket, sourceKey, optBucket, optKey)
            {
                NewObjectMetadata =
                    null // 如果NewObjectMetadata为null则为COPY模式(即拷贝源文件的元信息),非null则为REPLACE模式(覆盖源文件的元信息)。
            };
            // 拷贝文件。
            var ret = client.CopyObject(req);

            if (ret.HttpStatusCode == HttpStatusCode.OK)
            {
                return(new CopyFileResultDto(true, sourceKey, "success"));
            }

            return(new CopyFileResultDto(false, sourceKey,
                                         $"RequestId:{ret.RequestId},HttpStatusCode:{ret.HttpStatusCode}"));
        }
 public bool CopyObect(string sourceKey, string targetBucket, string targetKey)
 {
     try
     {
         var metadata = new ObjectMetadata();
         metadata.AddHeader(Aliyun.OSS.Util.HttpHeaders.ContentType, "text/html");
         var req = new CopyObjectRequest(bucketName, sourceKey, targetBucket, targetKey)
         {
             NewObjectMetadata = metadata
         };
         var ret = client.CopyObject(req);
         if (ret.HttpStatusCode == System.Net.HttpStatusCode.OK)
         {
             return(true);
         }
         return(false);
     }
     catch (OssException ex)
     {
         lastError = ex;
         return(false);
     }
 }
Exemplo n.º 8
0
 public void Copy(FileId sourceId, FileId destId)
 {
     _OssClient.CopyObject(new CopyObjectRequest(_BucketName, sourceId.ToString(), _BucketName, destId.ToString()));
 }
Exemplo n.º 9
0
        private void button3_Click(object sender, EventArgs e)
        {
            show_log("开始扫描阿里oss\r\n");
            timer1.Enabled = false;
            var           client     = new OssClient(endpoint, accessKeyId, accessKeySecret);
            var           keys       = new List <string>();
            ObjectListing result     = null;
            string        nextMarker = string.Empty;
            string        downloadFilename;
            string        temdirname;
            int           temint;
            string        temdatestr, temkeydirstr;

            do
            {
                var listObjectsRequest = new ListObjectsRequest(bucketName)
                {
                    Marker  = nextMarker,
                    MaxKeys = 1000,
                    Prefix  = prefix,
                };
                result = client.ListObjects(listObjectsRequest);



                foreach (var summary in result.ObjectSummaries)
                {
                    string str; int i;
                    show_log("a--" + summary.Key + "\r\n");
                    str = summary.Key;
                    i   = str.IndexOf("SH");
                    if (i <= 0)
                    {
                        continue;
                    }
                    str = str.Substring(i, 15);

                    if (!ispay(str))
                    {
                        show_log(" 单号未付款:" + str + "\r\n");
                        continue;
                    }
                    else
                    {
                        show_log(" 单号以付款:" + str + "\r\n");
                    }



                    keys.Add(summary.Key);
                    if (summary.Size == 0)
                    {
                        show_log(" 删除summary.keuy:" + summary.Key + "\r\n");
                        client.DeleteObject(bucketName, summary.Key);
                        continue;
                    }



                    var obj = client.GetObject(bucketName, summary.Key);


                    using (var requestStream = obj.Content)
                    {
                        temkeydirstr     = Path.GetDirectoryName(summary.Key);
                        temint           = temkeydirstr.IndexOf("\\") + 1;
                        temdatestr       = temkeydirstr.Substring(temint, 10);
                        downloadFilename = downtodir + temdatestr + "\\" + temkeydirstr;
                        //    downloadFilename = downtodir + summary.Key;

                        if (Directory.Exists(downloadFilename))
                        {
                        }
                        else
                        {
                            Directory.CreateDirectory(downloadFilename);
                        }


                        downloadFilename = downloadFilename + "\\" + Path.GetFileName(summary.Key);

                        byte[] buf = new byte[1024];
                        var    fs  = File.Open(downloadFilename, FileMode.OpenOrCreate);
                        var    len = 0;
                        // 通过输入流将文件的内容读取到文件或者内存中。
                        while ((len = requestStream.Read(buf, 0, 1024)) != 0)
                        {
                            fs.Write(buf, 0, len);
                        }
                        fs.Close();
                    }

                    ///下载后,复制文件到down_ok目录
                    var req = new CopyObjectRequest(bucketName, summary.Key, downok_bucketName, summary.Key);
                    client.CopyObject(req);
                    client.DeleteObject(bucketName, summary.Key);
                    show_log("Get object succeeded" + downloadFilename + "\r\n");
                }
                nextMarker = result.NextMarker;
            } while (result.IsTruncated);

            timer1.Enabled = true;
        }
Exemplo n.º 10
0
        public void mutiPartUpload(DoWorkEventArgs e)
        {
            for (; ;)
            {
                getListItemName();

                if (string.IsNullOrEmpty(path))
                {
                    break;
                }


                key = Guid.NewGuid().ToString() + path.Substring(path.LastIndexOf('.'));

                OssClient ossClient = new OssClient(endPoint, accessKeyID, accessKeySecret);

                InitiateMultipartUploadRequest initRequest =
                    new InitiateMultipartUploadRequest(bucketName, key);
                InitiateMultipartUploadResult initResult = ossClient.InitiateMultipartUpload(initRequest);


                // 设置每块为 5M ,不允许小于5M
                int partSize = 1024 * 100;

                FileInfo partFile = new FileInfo(path);

                // 计算分块数目
                int partCount = (int)(partFile.Length / partSize);
                if (partFile.Length % partSize != 0)
                {
                    partCount++;
                }

                // 新建一个List保存每个分块上传后的ETag和PartNumber
                List <PartETag> partETags = new List <PartETag>();

                for (int i = 0; i < partCount; i++)
                {
                    //判断是否取消操作
                    if (bw.CancellationPending)
                    {
                        e.Cancel = true; //这里才真正取消
                        SetText("已取消,取消速度慢以防止产生碎片");
                        return;
                    }

                    Bar.Value = (i * 100) / partCount;
                    UploadInfo(Bar.Value.ToString());

                    // 获取文件流
                    FileStream fis = new FileStream(partFile.FullName, FileMode.Open);

                    // 跳到每个分块的开头
                    long skipBytes = partSize * i;
                    fis.Position = skipBytes;
                    //fis.skip(skipBytes);

                    // 计算每个分块的大小
                    long size = partSize < partFile.Length - skipBytes ?
                                partSize : partFile.Length - skipBytes;

                    // 创建UploadPartRequest,上传分块
                    UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, key, initResult.UploadId);
                    uploadPartRequest.InputStream = fis;
                    uploadPartRequest.PartSize    = size;
                    uploadPartRequest.PartNumber  = (i + 1);
                    UploadPartResult uploadPartResult = ossClient.UploadPart(uploadPartRequest);

                    // 将返回的PartETag保存到List中。
                    partETags.Add(uploadPartResult.PartETag);

                    // 关闭文件
                    fis.Close();

                    manualReset.WaitOne();//如果ManualResetEvent的初始化为终止状态(true),那么该方法将一直工作,直到收到Reset信号。然后,直到收到Set信号,就继续工作。
                }

                CompleteMultipartUploadRequest completeReq = new CompleteMultipartUploadRequest(bucketName, key, initResult.UploadId);
                foreach (PartETag partETag in partETags)
                {
                    completeReq.PartETags.Add(partETag);
                }
                //  红色标注的是与JAVA的SDK有区别的地方

                //完成分块上传
                CompleteMultipartUploadResult completeResult = ossClient.CompleteMultipartUpload(completeReq);

                Bar.Value = 100;
                UploadInfo(Bar.Value.ToString());

                // 返回最终文件的MD5,用于用户进行校验
                //Console.WriteLine(completeResult.ETag);

                setListItemValue(key);

                if (!string.IsNullOrEmpty(Dir))
                {
                    CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, key, bucketName, Dir + "/" + key);
                    ossClient.CopyObject(copyObjectRequest);
                    ossClient.DeleteObject(bucketName, key);
                }
            }
        }
Exemplo n.º 11
0
 /// <summary>
 /// 复制对象
 /// </summary>
 /// <param name="sourceKey">源Key路径</param>
 /// <param name="destinationKey">新Key路径</param>
 public void CopyObject(string sourceKey, string destinationKey)
 {
     var copyobjectrequest = new CopyObjectRequest(_bucketName, sourceKey, _bucketName, destinationKey);
     var copyObjectResult  = _ossClient.CopyObject(copyobjectrequest);
 }
Exemplo n.º 12
0
        /// <summary>
        /// 资源拷贝
        /// </summary>
        /// <param name="originBucket">源Bucket</param>
        /// <param name="destinationBucket">目标Bucket</param>
        /// <param name="path">资源目录</param>
        public void CopyTo(string originBucket, string destinationBucket, string path)
        {
            CopyObjectRequest copyObjectRequest = new CopyObjectRequest(originBucket, path, destinationBucket, path);

            _ossClient.CopyObject(copyObjectRequest);
        }