ruby-on-rails - 使用 Rails gem 为 Froala 图像编辑器创建 Amazon Signaure V4

标签 ruby-on-rails ruby character-encoding froala

我正在遵循本指南 https://gist.github.com/stefanneculai/deed108fad534d0db3ff创建亚马逊签名。

  def getSignatureKey
    kDate    = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d'))
    kRegion  = OpenSSL::HMAC.digest('sha256', kDate, 'us-west-2')
    kService = OpenSSL::HMAC.digest('sha256', kRegion, 's3')
    kSigning = OpenSSL::HMAC.digest('sha256', kService, 'aws4_request')
    kSigning
  end

我正在使用 Rails 的 froala gem 并使用 imageUploadToS3 选项。但是,我在使用新的亚马逊签名版本时收到此错误。

Encoding::UndefinedConversionError at /admin/campaigns/1/edit_content
"\xAC" from ASCII-8BIT to UTF-8

我尝试将其更改为 getSignatureKey.force_encoding("ISO-8859-1").encode("UTF-8")。之后,服务器运行正常,当我上传图像时,我会从 Amazon 返回 SignatureDoesNotMatch

任何帮助将不胜感激。

最佳答案

只是一个猜测,但是这个怎么样?

kDate    = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d')).encode("iso-8859-1").force_encoding("utf-8")

或者只是

kDate    = OpenSSL::HMAC.digest('sha256', 'AWS4' + Figaro.env.aws_secret_access_key, Time.zone.now.utc.strftime('%Y%m%d')).encode("UTF-8")

关于ruby-on-rails - 使用 Rails gem 为 Froala 图像编辑器创建 Amazon Signaure V4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899779/

相关文章:

ruby-on-rails - apn_for_rails gem 实现问题

ruby-on-rails - 运行 Ruby 代码的 Google OpenID 示例?

ruby-on-rails - rvm 在根据默认设置重新启动后切换到旧的 ruby​​ 版本

Python/feedparser 脚本不会显示在 CGI/字符编码上

php - MySQLi 的编码问题

mysql - 在 Rails 中的参数化 SQL 查询中转义 ':' 和 '?'

jquery - 在遵循 Heroku 关于如何直接上传到 aws s3 的教程之后,无法将 ActionDispatch::Http::UploadedFile 转换为字符串

ruby 摩卡 : is there an equivalent to rspec-mocks' #and_call_original?

mysql - 哪个字符集是 '<' ?

ruby-on-rails - 类 `_run_suites' 的未定义方法 `Minitest::Unit' (NameError)