我想在凤凰城做这样的事情
function checkFile() {
$.ajax({
type: 'POST',
url: '/check.ex',
data: {'filename':'file.png'},
error : function(){
setTimeout(function(){ checkFile(); }, 3000);
},
success : function(data) {
// display the image
}
});
}
检查是否创建了文件,然后通过js显示图像。但当然/
路由到主页,我不太确定设置路由的最佳方式或放置独立的.ex或.exs文件的位置。我想知道是否有一种标准的解决方法。可能是phoenixframework.org上的文章或其他东西我很想念。提前致谢
答案 0 :(得分:1)
您无法直接访问.ex文件,您要做的是创建API资源。
看起来可能如下所示。
添加到router.ex
:
resources "/images/:filename", ImageController, only: [:show]
创建新的image_controller.ex
:
defmodule YourApp.ImageController do
use YourApp.Web, :controller
def show(conn, %{"filename" => filename}) do
image_path = Path.join("path/to/image", filename)
image_exists = File.regular?(image_path)
if image_exists do
render(conn, "show.json", image: filename)
else
conn
|> put_status(:not_found)
|> render("404.json", image: filename)
end
end
end
创建image_view.ex
:
defmodule YourApp.ImageView do
use YourApp.Web, :view
def render("show.json", %{image: filename}) do
%{data: %{image: filename}}
end
def render("404.json", %{image: filename}) do
%{status: 404, message: "#{filename} doesn't exist."}
end
end
现在您应该可以更改您的javascript:
function checkFile() {
$.ajax({
type: 'GET',
url: '/images/file.png',
error : function(){
setTimeout(function(){ checkFile(); }, 3000);
},
success : function(data) {
// display the image
}
});
}