gpt4 book ai didi

ruby-on-rails - 载波:指向现有图像

转载 作者:行者123 更新时间:2023-12-03 16:05:27 26 4
gpt4 key购买 nike

在我的 rails 应用程序中,我使用 Carrierwave 在 Amazon S3 上上传图像。我想指向现有的 Amazon S3 图像,而无需重新上传图像。例如,如果我在 处有一个现有的 Amazon S3 镜像。 http://test.s3.amazonaws.com/image/path/0001/image.jpg ,我可以更新图像的路径以指向该图像吗?我不想使用远程上传选项,因为我真的只想使用已经存在的完全相同的图像(但将其保存在我记录的“路径”属性中)。

在控制台中,我尝试过:

image.update_attributes(:path=> "http://test.s3.amazonaws.com/image/path/0001/image.jpg")

但这无法覆盖图像的路径。

最佳答案

插话,迟到总比不到好!警告:这是针对 rails 4 的,我目前仅在 rails 4.1 上进行测试。

这比它应该的更难,我想!这对我来说绝对重要的原因是我附加了 100MB+ MP3 文件,由于 CloudFlare SSL 限制(和常识),我无法在我的主机上接收这些文件。幸运的是,AWS 支持预授权上传,而且我让carrierwave 为我做正确的事情:

第 1 步:让carrierwave 告诉我它会在哪里存储文件,如果可以的话:

 m.raw_write_attribute('file','file.mp3');
url = m.file.url
signed = aws_presigned_url(url)
raw_write_attribute不保存任何东西,它只是在设置值时绕过载波。这使得对象就像从数据库中读取“file.mp3”一样。然后您可以询问 Carrierwave“文件所在的位置”。然后我将文件直接从客户端上传到 S3。完成后,我对 Rails 进行了另一个 API 调用,它执行以下代码:
 m.raw_write_attribute('file','file.mp3');
m.update_attribute('file','file.mp3');

这两个配对绕过了 Carrierwave。第一个让carrierwave 认为'file' 列设置为'file.mp3',第二个明确告诉rails 将'file.mp3' 持久化到数据库。因为 raw_write_attribute调用,Carrierwave 允许第二个通过不变。

关于ruby-on-rails - 载波:指向现有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17635861/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com