NutzCN Logo
问答 下载远程文件,但是nutz从Tomcat的bin目录下去查找这个文件。
发布于 2804天前 作者 @yz 2122 次浏览 复制 上一个帖子 下一个帖子
标签:

例如:

@Ok("raw")
@At("/download")
@GET
public File download(@Param("file") String file) {
	return new File(file);
}

如果file参数是这样: http://x.x.x.x/123.mp4


日志这样:[org.nutz.mvc.view.RawView] [DEBUG] - File downloading ... D:\tomcat7\bin\http:\x.x.x.x\123.mp4

怎么处理这种情况?

11 回复

这写法是等着被注入, 竟然直接用传入的参数做路径

本地调试,用的是/D:/123.mp4,是可以的。那有什么好的建议?

我有一个想法是,先保存到tmp目录里,在以这个新的文件路径返回。可以吗?

if (file.match("^[a-z0-9]+[.]mp4$"))
    return new File("D:\\" + file);
return null

拼出绝对路径就没错

你的意思是参数只传文件名,然后再把前面的域名给拼接上?

如果用如下方式,再加上你写的匹配路径file.match("^[a-z0-9]+[.]mp4$"),是否安全一点?

URL url = new URL("http://google.com/pathtoaimage.jpg");
File f = new File(url.getFile());

那个正则表达式够用的了

这里的file是想取远程服务器上的文件。

return new File("D:\\" + file);

这句代码是可以直接把远程文件通过接口返回给客户端吗?

new File如果不是绝对路径的话, 会按当前工作路径来算的, 这是java的规则, 跟nutz木有关系

哦。知道了。谢谢!

添加回复
请先登陆
回到顶部