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); } }
public string CopyObject(string bucketName, string source, string target) { client.CopyObject(new CopyObjectRequest(bucketName, source, bucketName, target) { NewObjectMetadata = new ObjectMetadata() }); return("true"); }
public bool Copy(string filekey) { try { CopyObjectRequest cp = new CopyObjectRequest("jingge2014", filekey, "jingge2015", filekey); client.CopyObject(cp); return(true); } catch { return(false); } }
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); }
/// <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); } }
public void Copy(FileId sourceId, FileId destId) { _OssClient.CopyObject(new CopyObjectRequest(_BucketName, sourceId.ToString(), _BucketName, destId.ToString())); }
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; }
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); } } }
/// <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); }
/// <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); }