我最近在尝试在本地上传图片时开始收到此错误。我不习惯得到错误。S3 方面或代码方面没有任何变化。不过,上传在生产中仍然有效。我已经尝试了所有通常的方法,重新启动服务器,重新启动计算机,更改为不同的浏览器,清除缓存/cookie,更改策略中的过期时间,检查我的 ENV 变量是否存在并且是否正确......
这是我使用 jQuery Fileupload 的咖啡脚本
$("input.fileupload").fileupload
url: '<%= s3_bucket_url %>'
type: 'POST'
autoUpload: true
dataType: 'xml'
paramName: 'file'
acceptFileTypes: /(\.|\/)(jpg|png)$/i
formData:
key: '<%= "tmp-uploads/#{SecureRandom.uuid}/${filename}" %>'
AWSAccessKeyId: '<%= Settings.fog.aws_access_key_id %>'
acl: 'public-read'
policy: '<%= s3_policy %>'
signature: '<%= s3_signature %>'
success_action_status: '201'
success: (data)->
# success stuff
fail: (e, data)->
# fail stuff
这是我的 S3 助手
module S3Helper
def s3_bucket_url
"https://#{Settings.fog.directory}.s3.amazonaws.com"
end
def s3_signature
Base64.encode64(
OpenSSL::HMAC.digest(
OpenSSL::Digest::Digest.new('sha1'),
Settings.fog.aws_secret_access_key,
s3_policy
)
).gsub(/\n/, '')
end
def s3_policy
Base64.encode64(
{
expiration: 24.hours.from_now.utc.strftime('%Y-%m-%dT%H:%M:%SZ'),
conditions: [
{ bucket: Settings.fog.directory },
{ acl: 'public-read' },
['starts-with', '$key', 'tmp-uploads/'],
{ success_action_status: '201' }
]
}.to_json
).gsub(/\n|\r/, '')
end
end
我的想法不多了。我需要添加“内容类型”吗?任何方向将不胜感激。