PutBlock错误:远程服务器返回错误:(400)将文件上载到Azure时出现错误请求

 mobiledu2502853323 发布于 2023-02-07 20:41

我面临远程服务器返回错误400的问题,将文件作为块blob上传到Azure时出现错误请求.但奇怪的是,有时代码可以用于上传特定文件,有时候它会因同一个文件而失败.

我的代码就像 -

        List blockIdList = new List();

        using (var file = new FileStream(_path, FileMode.Open, FileAccess.Read))
        {
            int blockId = 0;

            int blockSize = 4096;
            // open file
            while (file.Position < file.Length)
            {
                // calculate buffer size (blockSize in KB)   
                long bufferSize = blockSize * 1024 < file.Length - file.Position ? blockSize * 1024 : file.Length - file.Position;
                byte[] buffer = new byte[bufferSize];
                // read data to buffer
                file.Read(buffer, 0, buffer.Length);
                // save data to memory stream and put to storage
                using (var stream = new MemoryStream(buffer))
                {
                    // set stream position to start
                    stream.Position = 0;
                     convert block id to Base64 Encoded string      
                    var blockIdBase64 = Convert.ToBase64String(System.BitConverter.GetBytes(blockId));

                    blockBlob.PutBlock(blockIdBase64, stream, null);
                    blockIdList.Add(blockIdBase64);
                    // increase block id
                    blockId++;
                }
            }

            blockBlob.PutBlockList(blockIdList);

            file.Close();
        } 

不知道为什么这个错误正在抛出并寻找可能的解决方案.

谢谢

1 个回答
  • 我注意到的一件事是你使用整数值blockId.这可能是您上传失败的一个原因,因为所有blockIds的长度必须相同.因此,如果将文件拆分为10个块(blockId = 0 - 9),则上传代码将起作用.但是,如果文件被拆分为10个以上的块,则上载将失败.

    我的建议是用0填充字符串,以便所有的blockIds都具有相同的长度.由于您可以将blob拆分为最多50,000个块,因此执行blockId.ToString("d6")应该可以解决问题.

    您可能还会发现此博文有用:http://gauravmantri.com/2013/05/18/windows-azure-blob-storage-dealing-with-the-specified-blob-or-block-content-is-invalid -error /.

    2023-02-07 20:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有