Delphi EIPHTTPProtocolExceptionPeer异常,使用字节数组全部设置为零的PutBlock
使用Delphi XE2 Update 3时,我在将零字节块上载到Azure时遇到问题。当我说零字节时,我指的是每个元素都设置为零的字节数组(不是零长度) 例如:Delphi EIPHTTPProtocolExceptionPeer异常,使用字节数组全部设置为零的PutBlock,delphi,delphi-xe2,azure-storage-blobs,Delphi,Delphi Xe2,Azure Storage Blobs,使用Delphi XE2 Update 3时,我在将零字节块上载到Azure时遇到问题。当我说零字节时,我指的是每个元素都设置为零的字节数组(不是零长度) 例如: var ConInfo: TAzureConnectionInfo; RespInfo: TCloudResponseInfo; BlobService: TAzureBlobService; Content: TBytes; MD5: String; Hasher: TIdHashMessageDigest5
var
ConInfo: TAzureConnectionInfo;
RespInfo: TCloudResponseInfo;
BlobService: TAzureBlobService;
Content: TBytes;
MD5: String;
Hasher: TIdHashMessageDigest5;
begin
ConInfo:=TAzureConnectionInfo.Create(self);
ConInfo.AccountName:='YOUR ACCOUNT NAME';
ConInfo.AccountKey:='YOUR ACCOUNT KEY';
ConInfo.Protocol:='http';
BlobService:=TAzureBlobService.Create(ConInfo);
RespInfo:=TCloudResponseInfo.Create;
SetLength(Content, 1048576); // 1 MByte
FillMemory(@Content[0], 1048576, 0); // << --- fill it with anything except 0 and it works
Hasher:=TIdHashMessageDigest5.Create;
MD5:=Data.Cloud.CloudAPI.EncodeBytes64(Hasher.HashBytes(Content));
Hasher.Free;
BlobService.PutBlock('CONTAINER NAME', 'BLOB NAME', MD5, Content, MD5, '', RespInfo);
var
ConInfo:tazuinfo;
RespInfo:TCloudResponseInfo;
BlobService:TAzureBlobService;
内容:t字节;
MD5:字符串;
Hasher:TIdHashMessageDigest5;
开始
ConInfo:=TAzureConnectionInfo.Create(self);
ConInfo.AccountName:=“您的帐户名”;
ConInfo.AccountKey:=“您的帐户密钥”;
ConInfo.Protocol:='http';
BlobService:=TAzureBlobService.Create(ConInfo);
RespInfo:=TCloudResponseInfo.Create;
SetLength(内容,1048576);//1兆字节
填充内存(@Content[0],1048576,0);// 令人难以置信的是,问题似乎是ttgbNgpWctgMJ0MPORU+LA==
如果将其用作块ID,则会出现该错误。实际上,它是TCloudService.URLEncodeValue()中的一个错误。它不会在应该时对加号(+)进行URL编码。