代码之家  ›  专栏  ›  技术社区  ›  Galet

如何验证AWS S3将响应放入Rails

  •  0
  • Galet  · 技术社区  · 7 年前

    我在用 aws-skd-s3 我的Rails项目中的宝石。

    创建S3资源

    s3 = Aws::S3::Resource.new(access_key_id: #####,
            secret_access_key: #####,
            region: 'us-east-1')
    

    创建一个S3对象

    path = 'sample'
    key = test.csv
    obj = s3.bucket(#{bucket_name}).object("#{path}" + key)
    

    在S3中存储CSV

    obj.put(body: csv_response, content_type: 'text/csv')
    

    如何验证将csv存储在S3中的put方法没有任何问题?

    是否有任何状态代码可供S3中的put方法验证?

    0 回复  |  直到 7 年前
        1
  •  1
  •   Vaibhav    7 年前

    有两种方法:

    1. 存储结果。它应该是一个 PutObjectOutput 键入对象。你可以查看 official put请求方法的方法文档。
    2. 第二种方法是做一个 exists? 在您的put请求完成后立即致电。比如:
       s3 = Aws::S3::Resource.new(region: 'ap-southeast-1') # change to the region you use
       obj = s3.bucket('bucket-name').object("path/to/object/in/bucket")
       if obj.exists?
         # Object was uploaded successfully!
       else
         # No it wasn't!
       end
    

    希望有帮助!

        2
  •  1
  •   Subash    7 年前

    我看到或读到其他人这样做的一种方式是,在上传之前计算原始文件的md5散列,然后将其与 etag 从客户的反应中得到的价值 obj.put