我(我认为是)完美的Heroku-Carrierwave-AWS。
我可以像魅力一样上传图片。
我现在需要通过JSON请求将相应的图像发送到应用程序。这一直在我的测试服务器上工作,但出于某种原因,我从我的电话调用我的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,但除了给我整个网址外,它仍然无法使用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
我的上传器中有以下内容:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.user.id}"
end
提前致谢。
答案 0 :(得分:0)
在行中:
$desc= $_GET['desc'];
echo "$desc"; // outputs as "testcolumn"
// SUCCESS when passed as a string
echo $ssh->exec('mysql -h localhost -u root -pXXXX dbname -e "INSERT INTO test_execution (test_desc) values ( \"testcolumn\" );"');
// ERROR when passed as a parameter
echo $ssh->exec('mysql -h localhost -u root -pXXXX dbname -e "INSERT INTO test_execution (test_desc) values (\'$desc\');"');
更改@mainphoto = Base64.strict_encode64(File.read(@photos.mainphoto.current_path))
current_path