Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Delphi XE 10.1 i Cloud

[es] :: Pascal / Delphi / Kylix :: Delphi XE 10.1 i Cloud

[ Pregleda: 410 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 242
*.cust.tele2.hr.



+2 Profil

icon Delphi XE 10.1 i Cloud26.03.2019. u 22:05 - pre 16 meseci
Imam problem sa upload-om na cloud.
Našao sam na net-u proceduru:
Code:

   try

       Text_Stream:= TStringStream.Create;
       Text_Stream.LoadFromFile('C:\Projekti\XE\cloud\Popis.txt');
       //Text_Byte := Text_Stream.Bytes;
       ConAmazon := TAmazonConnectionInfo.Create(nil);
       ConAmazon.AccountKey := AcKey;
       ConAmazon.AccountName := AcName;
       ConAmazon.StorageEndpoint := 'eu-central-1.s3.amazonaws.com';

       Service := TAmazonStorageService.Create(ConAmazon);
       Response := TCloudResponseInfo.Create;

       buckets := TAmazonBucketResult.Create(bucket);
       buckets := service.GetBucket(bucket , nil, Response, amzrEUCentral1);
       for i := 0 to buckets.Objects.Count-1 do begin
          m.Lines.Append('Name: ' + buckets.Objects[i].Name + '; LastModified: ' + buckets.Objects[i].LastModified + '; Storageclass: '+ buckets.Objects[i].StorageClass);
       end;


       bResult:= Service.UploadObject(bucket, 'Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);
       if bResult = True then
          ShowMessage('Upload success'+#13+IntToStr(Response.StatusCode)+' -> ' + Response.StatusMessage)
       else
          ShowMessage('Upload fails'+#13+IntToStr(Response.StatusCode)+' -> ' + Response.StatusMessage);

       buckets := TAmazonBucketResult.Create(bucket);
       buckets := service.GetBucket(bucket , nil, Response, amzrEUCentral1);
       m.Lines.Append(' ******************* 2 **************');
       for i := 0 to buckets.Objects.Count-1 do begin
          m.Lines.Append('Name: ' + buckets.Objects[i].Name + '; LastModified: ' + buckets.Objects[i].LastModified + '; Storageclass: '+ buckets.Objects[i].StorageClass);
       end;

    Finally
       Text_Stream.Free;
       Service.Free;
       ConAmazon.Free;
       buckets.Free;
    end;


Dio koji čita sa cloud-a odradi posao, u memo dobijem pospis file-ova sa clouda.
UplodaObject ne napravi ništa, a poruka koju dobijem (Response) je:

404 -> Not Found - The bucket dos not exists (NoSuchBucket)

Kako nema bucket-a kad sa sa njega pročitao sadržaj?
U popisu mi daje za ime file-a na cloudu: dir1/dir2/file_name.ext Gdje upisati "dir1" i "dir1"? Da li umjesto "Popist.txt" upisati "dir1/dir2/Popis.txt" ?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2635



+69 Profil

icon Re: Delphi XE 10.1 i Cloud26.03.2019. u 23:02 - pre 16 meseci
Da li Delphi ima neke primere za to? Ili mozda sam amazon, neki swagger ili PostMan da mozes lako videti sta salje.
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 242
93.140.14.*



+2 Profil

icon Re: Delphi XE 10.1 i Cloud27.03.2019. u 11:49 - pre 16 meseci
Ono što sam našao na net-u ne radi. Tj. radi djelomično: mogu očitati sadržaj bucketa, ali ne i napraviti uploda file-a.

Kada izmjenim:
Code:

bResult:= Service.UploadObject(bucket, 'Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);


u
Code:

bResult:= Service.UploadObject(bucket, bucket + ':Popis.txt', Text_Stream.Bytes , False, nil, nil, amzbaPrivate, Response);


tada dobijem drugu obavijest o grešci:
„Forbiden – The requset signature we calculated does not match the signature you privede. Check your key and signing method. (SigrnatureDoesNotMatch)“
 
Odgovor na temu

FranjoZG
Franjo Popović
Programer
Zagreb

Član broj: 328819
Poruke: 242
93.140.14.*



+2 Profil

icon Re: Delphi XE 10.1 i Cloud27.03.2019. u 12:31 - pre 16 meseci
Uspio sam rijšiti problem, možda će kome zatrebati:

Izmjenio sam liniju:
Code:

ConAmazon.StorageEndpoint := 'eu-central-1.s3.amazonaws.com';


tako da "s3" dođe na početak:

Code:

ConAmazon.StorageEndpoint := 's3-eu-central-1.amazonaws.com';


Isto tako, putanja na cloudu se navodi kao:
Code:

bResult:= Service.UploadObject(bucket, 'dir1/dir2/file.txt', Text_Byte, False, nil, Headers, amzbaPrivate, Response);

 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Delphi XE 10.1 i Cloud

[ Pregleda: 410 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.