procedure
TForm2
.
Button1Click(Sender: TObject);
function
GetSha256(sStream: TStream):
String
;
begin
IdSSLOpenSSL
.
LoadOpenSSLLibrary;
with
TIdHashSHA256
.
Create
do
try
Result := HashStreamAsHex(sStream);
finally
Free;
end
;
IdSSLOpenSSL
.
UnLoadOpenSSLLibrary;
end
;
var
fStream: TStream;
asa:
string
;
begin
fStream := TStream
.
Create;
if
OpenDialog1
.
Execute
then
begin
fStream := TFileStream
.
Create(OpenDialog1
.
FileName, fmOpenRead);
IdWebDAV1
.
Request
.
Clear;
IdWebDAV1
.
Request
.
CharSet :=
'utf-8'
;
IdWebDAV1
.
Request
.
BasicAuthentication :=
False
;
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'PUT /123.html HTTP/1.1'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Host: webdav.yandex.ru'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Accept: */*'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Authorization: OAuth *********************'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'ETag: '
+ MD5DigestToStr(MD5Stream(fStream)));
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Sha256: '
+ GetSha256(fStream));
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Expect: 100-continue'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Content-Type: application/binary'
);
IdWebDAV1
.
Request
.
CustomHeaders
.
Add(
'Content-Length: '
+ IntToStr(fStream
.
Size));
Application
.
ProcessMessages;
Application
.
ProcessMessages;
Memo1
.
Text := IdWebDAV1
.
Request
.
CustomHeaders
.
Text;
IdWebDAV1
.
Request
.
Source
.
Size
.
ToString;
fStream
.
Free;
end
;
end
;