Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi EIPHTTPProtocolExceptionPeer异常,使用字节数组全部设置为零的PutBlock_Delphi_Delphi Xe2_Azure Storage Blobs - Fatal编程技术网

Delphi EIPHTTPProtocolExceptionPeer异常,使用字节数组全部设置为零的PutBlock

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

使用Delphi XE2 Update 3时,我在将零字节块上载到Azure时遇到问题。当我说零字节时,我指的是每个元素都设置为零的字节数组(不是零长度)

例如:

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编码。