对OSS的操作
2、AccessKey AccessID :
const string _accessKey = ” your access Key”;
const string _endpoint = “http://oss-cn-(服务器位置).aliyuncs.com“;
{
public delegate void ShowProgressDelegate(int totalStep, int currentStep);
private ShowProgressDelegate process_;
private Control invokeControl_;
private long totalSize;
private long currentSize;
private long currentsizenum;
public long TotalSize
{
get { return totalSize; }
}
public long CurrentSize
{
get { return this.currentsizenum; }
}
public float CurrentProgress
{
get
{
if (this.totalSize != 0)
{
return (float)this.currentsizenum * 100 / (float)this.totalSize;
}
else
{
return 0;
}
}
}
public string UploadMultipart(String bucketName, String objectName, String fileToUpload, int partSize, ShowProgressDelegate prosess, Control t)
{
invokeControl_ = t;
process_ = prosess;
var uploadId = InitiateMultipartUpload(bucketName, objectName);
var partETags = UploadParts(bucketName, objectName, fileToUpload, uploadId, partSize);
var completeResult = CompleteUploadPart(bucketName, objectName, uploadId, partETags);
return completeResult.BucketName;
}
private static string InitiateMultipartUpload(String bucketName, String objectName)
{
var request = new InitiateMultipartUploadRequest(bucketName, objectName);
var result = _ossClient.InitiateMultipartUpload(request);
return result.UploadId;
}
private List<PartETag> UploadParts(String bucketName, String objectName, String fileToUpload, String uploadId, int partSize)
{
var fi = new FileInfo(fileToUpload);
var fileSize = fi.Length;
totalSize = fileSize;
var partCount = fileSize / partSize;
if (fileSize % partSize != 0)
{
}
long size = 0;
var partETags = new List<PartETag>();
for (var i = 0; i < partCount; i++)
{
using (var fs = File.Open(fileToUpload, FileMode.Open))
{
var skipBytes = (long)partSize * i;
fs.Seek(skipBytes, 0);
size = (partSize < fileSize – skipBytes) ? partSize : (fileSize – skipBytes);
var request = new UploadPartRequest(bucketName, objectName, uploadId)
{
InputStream = fs,
PartSize = size,
PartNumber = i + 1
};
var result = _ossClient.UploadPart(request);
partETags.Add(result.PartETag);
currentSize = size;
}
currentsizenum += currentSize;
object[] objs = new object[] { 100, 0 };
objs[1] = (int)CurrentProgress;
invokeControl_.Invoke(process_, objs);
}
return partETags;
}
private CompleteMultipartUploadResult CompleteUploadPart(String bucketName, String objectName,
String uploadId, List<PartETag> partETags)
{
var completeMultipartUploadRequest =
new CompleteMultipartUploadRequest(bucketName, objectName, uploadId);
foreach (var partETag in partETags)
{
completeMultipartUploadRequest.PartETags.Add(partETag);
}
return _ossClient.CompleteMultipartUpload(completeMultipartUploadRequest);
}
}