jfinal整合hdfs文件上传时如何获取真实路径

正在整合hdfs做分布式存储,如果通过getFile()方法就把文件存储到本地了,想直接将文件存储到hdfs中,因为文件太大了,存储到本地后再复制到hdfs太耗时间和性能了。想直接获取前端<input type=file>中的真实路径,再调用hadoop的copyToLocalFile(src,dist)方法上传文件,不在本地存储一次了。请各位大神指点啊!如有其它方法能实现直接上传到hdfs也可。

评论区

JFinal

2017-06-15 22:45

参考一下 com.jfinal.upload.MultipartRequest.java 这个文件中的做法,无非就拿到 HttpServletRequest 对象,从中解析出自己所需要的文件内容

具体到你的应用场景,你可以在 controller 中通过 getRequest() 得到 request 对象,然后将 MultipartRequest 中的代码改造成写入到 hdfs 而不是本地文件系统

cs88du

2017-06-20 13:46

@JFinal 感谢波总

lishixing

2017-12-06 19:40

@cs88du 你的这个问题解决了吗,我也遇到同样的问题求助啊!!!

cs88du

2017-12-07 14:46

@lishixing 我直接获取Controller中getRequest().getInputStream()读取流,将流传给Hdsf方法upload(InputStream in, String hdfsPath)就可以了,方法中使用OutputStream out = fs.create(new Path(hdfsPath)); IOUtils.copyBytes(in, out, 4096, true);将流写到Hdfs中即可

热门反馈

扫码入社