开发者社区> 问答> 正文

分快上传,提示Thespecifieduploaddoesnotexist.

学习的 千鸟前辈的代码 大文件分块上传代码  传递的参数是
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.
错误  求大神们指点!!!!!!

展开
收起
学啊学的 2015-06-05 13:40:49 10079 0
3 条回答
写回答
取消 提交回答
  • 大神,麻烦问下您具体是怎么解决的,我遇到一样的问题,文件抄过10M,就会出这个问题,一模一样的

    2020-06-18 14:51:38
    赞同 展开评论 打赏
  • 回1楼千鸟的帖子
    解决了

    new CompleteMultipartUploadRequest(bucketName, strKey, initiateMultipartUploadResult.UploadId);

    把这个地方的 strFielName 跟 密钥key 弄混了

    -------------------------

    Re分快上传,提示Thespecifieduploaddoesnotexist.
    new CompleteMultipartUploadRequest(bucketName, strKey, initiateMultipartUploadResult.UploadId);

    这的 key
    2015-06-05 16:17:03
    赞同 展开评论 打赏
  • LT是个伪程序员
    单步调试的报错结果?

    -------------------------

    回 3楼(学啊学的) 的帖子
    解决了就好^_^
    2015-06-05 14:58:59
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
附件下载测试 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载