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

  • 相关阅读:
    Zotero群组新建后无法显示
    配置vscode的C++环境Unexpected GDB output from command "-environment-cd
    战地5
    virtual studio发布到gihub
    virtual stuido同时调试多个控制台
    js复制标题和链接
    语义理解偶然算法带来的感动
    漂亮的打火机
    雷柏鼠标vt350Q配对
    Unable to open 'free_base.cpp': Unable to read file 'c:Program FilesMicrosoft VS Codeminkernelcrtsucrtsrcappcrtheapfree_base.cpp'
  • 原文地址:https://www.cnblogs.com/bigben0123/p/5527843.html
Copyright © 2011-2022 走看看