标签:
// String aa = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath(); // log.info("context path:" + aa); // // ServletContext ctx = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext(); // String realPath = ctx.getRealPath("/"); // log.info("real root path:" + realPath); // String apks = ctx.getRealPath("/apks"); // log.info("real apks path:" + apks);
获取war的根路径。
简单的方案是放到 wildfly的 jboss.server.data.dir 配置下。这样就可以保存了。
File targetFile = null; try { InputStream stream = file.getInputstream(); File uploads = new File(System.getProperty("jboss.server.data.dir"), Config.APK_UPLOAD_PATH); if (!uploads.exists()) { uploads.mkdirs(); } targetFile = new File(uploads, file.getFileName()); Files.copy(stream, targetFile.toPath(),StandardCopyOption.REPLACE_EXISTING ); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
http访问可以使用servlet:
@WebServlet(description = " ", urlPatterns = { "/download/*" })
public class StbServlet extends HttpServlet {
private static final long serialVersionUID = 100L;
/**
* @see HttpServlet#HttpServlet()
*/
public StbServlet() {
super();
}
protected void processRequest(HttpServletRequest request, HttpServletResponse response) {
String path = request.getPathInfo();
;
String filename = path.substring(path.lastIndexOf(‘/‘)+1);
File uploads = new File(System.getProperty("jboss.server.data.dir"), Config.APK_UPLOAD_PATH);
if(!uploads.exists()){
return;
}
File file = new File(uploads, filename);
response.setHeader("Content-Type", getServletContext().getMimeType(filename));
response.setHeader("Content-Length", String.valueOf(file.length()));
response.setHeader("Content-Disposition", "inline; filename=\"" + filename + "\"");
try {
Files.copy(file.toPath(), response.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
processRequest(request, response);
}
}
更多配置和实现参考:
http://stackoverflow.com/questions/4543936/load-images-from-outside-of-webapps-webcontext-deploy-folder-using-hgraphi
http://stackoverflow.com/questions/18664579/recommended-way-to-save-uploaded-files-in-a-servlet-application
http://stackoverflow.com/questions/14211843/how-to-save-uploaded-file-in-jsf
标签:
原文地址:http://www.cnblogs.com/bigben0123/p/5527843.html