【问题标题】:from ftp ssl to Amazon S3从 ftp ssl 到 Amazon S3
【发布时间】:2014-11-30 23:27:03
【问题描述】:

我有一个在 Delphi XE5 中通过 SSL 使用 FTP 的系统,但我计划切换到 Amazon S3。 我正在尝试创建一组简单的命令来设置参数、连接、将文件放入存储桶并断开连接。

现在我正在使用 IDFTP 进行此操作

ftp := TIdFTP.Create();
  ssl := TIdSSLIOHandlerSocketOpenSSL.Create(ftp);
  ftp.IOHandler := ssl;
  ssl.SSLOptions.Method := sslvSSLv23;
  ftp.UseTLS := utUseExplicitTLS;
  ftp.Host := 'myftpserver.com';
  ftp.Username := 'user';
  ftp.Password := 'password';
  ftp.Passive := true;
  ftp.Connect;
  ftp.ChangeDir(destinefolder);

for i := 1 to3 do    
begin               //upload  file1.jpg, file2.jpg, file3.jpg
ftp.put (local + ‘file’ + inttostr(i) + ’.jpg’ , ‘file’ + inttostr(i), true, false);
end;

ssl.Free;
 ftp.Free;  

它适用于 FTPS。

我读到有人说亚马逊 S3 可以使用 IDhttp。

我想知道是否有一种简单的方法可以让我的 ftps 适应 amazon s3。

【问题讨论】:

  • 那么您遇到的实际问题是什么?您需要更具体,不要只是乱扔一堆代码而不解释它做什么(或不做什么)。你有错误吗?如果是这样,它们是什么?您是否遇到意外行为?如果是这样,它是什么,以及期待什么?到目前为止,您尝试了哪些方法来解决问题?
  • 很抱歉。我在 Delphi 上有 2 个访问 S3 的示例项目:完美运行的云资源管理器和仅正确列出存储桶的 PC Plus S3 示例 (itwriting.com/s3.php)(不会获取或放置文件,也不会列出对象)。但即便如此,它们对于我需要的东西来说太复杂了。我只需要将文件放入存储桶中。我有: Access Key Id Secret Access Key Bucket name File Name 这对于上传文件应该足够了。我想我需要知道如何构建一个字符串,以使用 IDHTTP.Put(... 将文件发送到 Amazon S3 服务器。

标签: delphi ssl amazon-s3 ftp amazon


【解决方案1】:

基于 AWS 文档:

PUT Object

Authenticating a Request in the Authorization Header

试试这个:

Auth := '...'; // calculate/format based on Access Key Id Secret Access Key...

for i := 1 to 3 do    
begin         
  FS := TFileStream.Create(local + 'file' + inttostr(i) + '.jpg', fmOpenRead or fmShareDenyWrite);
  try
    IdHTTP1.Request.CustomHeaders.Values['Authorization'] := Auth;
    IdHTTP1.Request.BasicAuthentication := False;
    IdHTTP1.Request.Date := ...;
    IdHTTP1.Request.Expect := '100-continue';
    IdHTTP1.Request.ProtocolVersion := pv1_1;
    // other headers as needed...
    ...
    IdHTTP1.Put('http://'+BucketName+'.s3.amazonaws.com/file' + inttostr(i), FS);
  finally
    FS.Free;
  end;
end;

【讨论】:

    猜你喜欢
    • 2021-06-20
    • 2020-10-08
    • 2019-12-02
    • 2014-01-31
    • 2018-06-08
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多