学习的 千鸟前辈的代码 大文件分块上传代码 传递的参数是
fileLength=FileUpload1.PostedFile.ContentLength, fis=FileUpload1.PostedFile.InputStream
public static string UploadFile(int fileLength, Stream fis,string strFielName)
{
// id
string strId = System.Configuration.ConfigurationManager.AppSettings["AliId"];
// Key
string strKey = System.Configuration.ConfigurationManager.AppSettings["AliKey"];
string strEndpoint = System.Configuration.ConfigurationManager.AppSettings["AliUrl"];
string bucketName = System.Configuration.ConfigurationManager.AppSettings["bucket"];
OssClient client = new OssClient(strEndpoint, strId, strKey);
InitiateMultipartUploadRequest initiateMultipartUploadRequest = new InitiateMultipartUploadRequest(bucketName, strKey);
InitiateMultipartUploadResult initiateMultipartUploadResult = client.InitiateMultipartUpload(initiateMultipartUploadRequest);
// 设置每块为 5M
int partSize = 1024 * 1024 * 5;
// 计算分块数目
int partCount = (int)(fileLength / partSize);
if (fileLength % partSize != 0)
{
partCount++;
}
// 新建一个List保存每个分块上传后的ETag和PartNumber
List<PartETag> partETags = new List<PartETag>();
for (int i = 0; i < partCount; i++)
{
// 跳到每个分块的开头
long skipBytes = partSize * i;
fis.Position = skipBytes;
//fis.skip(skipBytes);
// 计算每个分块的大小
long size = partSize < fileLength - skipBytes ? partSize : fileLength - skipBytes;
// 创建UploadPartRequest,上传分块
UploadPartRequest uploadPartRequest = new UploadPartRequest(bucketName, strFielName, initiateMultipartUploadResult.UploadId);
uploadPartRequest.InputStream = fis;
uploadPartRequest.PartSize = size;
uploadPartRequest.PartNumber = (i + 1);
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest);
// 将返回的PartETag保存到List中。
partETags.Add(uploadPartResult.PartETag);
// 关闭文件
fis.Close();
}
CompleteMultipartUploadRequest completeReq = new CompleteMultipartUploadRequest(bucketName, strKey, initiateMultipartUploadResult.UploadId);
foreach (PartETag partETag in partETags)
{
completeReq.PartETags.Add(partETag);
}
//完成分块上传
CompleteMultipartUploadResult completeResult = client.CompleteMultipartUpload(completeReq);
return completeResult.ETag;
}
在
UploadPartResult uploadPartResult = client.UploadPart(uploadPartRequest); 这一步的时候 提示:
The specified upload does not exist. The upload ID may be invalid, or theupload may have been aborted or completed.
错误 求大神们指点!!!!!!
-------------------------
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。