zoukankan      html  css  js  c++  java
  • wildfly jsf 文件 上传后 可以下载 访问

    //        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

  • 相关阅读:
    清除浮动的几种方法
    call() 、 apply() 、bind()方法的作用和区别!
    关于如何通过json更改背景图片
    js验证码实现
    解决python3 UnicodeDecodeError: 'gbk' codec can't decode byte
    Rest接口测试,巧用firebug插件
    PHP中字符串的连接和换行
    PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加
    PHP的三种输出方式
    PHP中的include、include_once、require、require_once
  • 原文地址:https://www.cnblogs.com/bigben0123/p/5527843.html
Copyright © 2011-2022 走看看