Ruby Sinatra映像文件列表在本地主机上工作,但在测试服务器上不工作
下面的代码从public/images目录获取一个图像列表,创建一个哈希数组并将其转换为JSON,然后返回给调用方 这段代码在本地主机上运行得非常好——我可以根据需要获得图像名称列表 然后我将代码上传到我的VPS,并在同一个环境中运行,在瘦主机上运行,但没有返回任何内容。无论我做了什么更改,无论是获取文件名的路径还是方法,比如使用Ruby Sinatra映像文件列表在本地主机上工作,但在测试服务器上不工作,ruby,sinatra,thin,Ruby,Sinatra,Thin,下面的代码从public/images目录获取一个图像列表,创建一个哈希数组并将其转换为JSON,然后返回给调用方 这段代码在本地主机上运行得非常好——我可以根据需要获得图像名称列表 然后我将代码上传到我的VPS,并在同一个环境中运行,在瘦主机上运行,但没有返回任何内容。无论我做了什么更改,无论是获取文件名的路径还是方法,比如使用glob而不仅仅是Dir,我尝试的方法都无法奏效 以下是我使用Ajax从客户端JavaScript调用的路由中的代码: # get all images get '/d
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
我在本地主机上重新运行了一个值数组:
[ {title: "bear-love.jpg"value: "/content/bear-love.jpg"}, {title: "bear-love2.jpg"value: "/content/bear-love2.jpg"}...]
我从VPS获得一个空阵列:
[]
事实证明,在服务器上获取当前路径更容易,只需获取我需要的图像文件名列表,然后添加前缀路径供浏览器使用。尝试使用权限是有意义的-public是提供文件的默认路径-我甚至不提供文件,只是文件名列表,所以可能需要读取权限问题2。三,。已经过验证,因为如果没有正确的结构,该站点将无法运行。不过,我会查看烫发,谢谢