下面的代码从public / images目录中获取图像列表,创建一个哈希数组并将其转换为JSON,然后返回给调用者。
代码在本地主机上完美运行 - 我根据需要获取图像名称列表。
然后我将代码上传到我的VPS并在相同的环境中运行,在瘦身上运行,根本没有返回任何内容。无论我改变什么,获取文件名的路径或方法,例如使用glob
而不仅仅是Dir
,我尝试的都没有用。
以下是我使用Ajax从客户端JavaScript调用的路由中的代码:
# get all images
get '/debug/posts/images/' do
puts '>> debug > posts > images > get'
all_images = Array.new
# build substitute prefix path
uri = URI(request.url)
prefix ='http://' + uri.host
if request.port
prefix += ':' + request.port.to_s
end
prefix += '/content/'
begin
content_type :json
# get list of images
pics = Dir['public/images/*']
pics.map { |pic|
# build hash for use with tinyMCE
pic.split('/')
pic_hash = {:title => File.basename(pic).to_s, :value => prefix + File.basename(pic).to_s}
all_images.push(pic_hash)
}
# convert to json
pic_json = JSON.generate(all_images)
body(pic_json)
rescue Sequel::Error => e
puts e.message
status(400).to_json
end
end
我在localhost上运行了一系列值:
[ {title: "bear-love.jpg"value: "/content/bear-love.jpg"}, {title: "bear-love2.jpg"value: "/content/bear-love2.jpg"}...]
我从VPS获得一个空数组:
[]
答案 0 :(得分:1)
答案 1 :(得分:0)
事实证明,在服务器上获取当前路径更容易,只需获取我需要的图像文件名列表,只需添加我的前缀路径即可在浏览器中使用。