gpt4 book ai didi

ruby-on-rails - Carrierwave AWS Heroku : current_path and File. 读取找不到文件

转载 作者:太空宇宙 更新时间:2023-11-03 16:50:29 25 4
gpt4 key购买 nike

我有(我认为的)完美运行的 Heroku-Carrierwave-AWS。

我可以像魅力一样上传图片。

我现在需要通过 JSON 请求将相应的图像发送到应用程序。这一直在我的测试服务器上运行,但出于某种原因,我从我的 rails 调用的 Heroku 日志中得到以下信息:

Started POST "/downloadUserPhotos" for ?? at 2014-05-03 03:27:38 +0000
Errno::ENOENT (No such file or directory @ rb_sysopen - uploads/photo/mainphoto/1/largeimage.jpg):
app/controllers/stats_controller.rb:22:in `read'
app/controllers/stats_controller.rb:22:in `downloadPhotos'

我很确定这与以下 Ruby/Rails 代码有关:

def downloadPhotos
@photos = Photo.find_by_user_id(current_user.id)
@mainphoto = Base64.strict_encode64(File.read(@photos.mainphoto.current_path))
end

当我在 Heroku 上使用控制台并输入以下内容时:

@photos = Photo.find(1)

它有效,我得到了正确的记录显示。当我为 mainphoto 请求 current_path 时,我得到:

irb(main):002:0> @photos.mainphoto.current_path
=> "uploads/photo/mainphoto/1/largeimage.jpg"

所以,它知道它存在。而且它在正确的位置。

谁能告诉我(或指出正确的方向)为什么我不能使用 File.read。而且,更重要的是,我现在如何让它读取图像文件并对其进行编码??

这让我有些困惑。

我尝试使用@photos.mainphoto.url,但除了给我完整的 URL 之外,它仍然无法使用 File.read 找到文件。

我的载波配置是:

CarrierWave.configure do |config|
config.fog_credentials = {

# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => ENV['S3_REGION']
}

config.cache_dir = "#{Rails.root}/tmp/uploads"

config.fog_directory = ENV['S3_BUCKET_NAME']

end

我的 uploader 中有以下内容:

def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.user.id}"
end

提前致谢。

最佳答案

行内:

@mainphoto = Base64.strict_encode64(File.read(@photos.mainphoto.current_path))

更改 current_pathurl

关于ruby-on-rails - Carrierwave AWS Heroku : current_path and File. 读取找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23439988/

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