How to upload and save an attachment via XPages Java Bean

前端 未结 2 2147
星月不相逢
星月不相逢 2020-12-15 01:23

I get how you can use Expression Language to bind XPages controls to a Java Bean. Then it accesses the setters and getters automatically.

But how do you handle a fi

2条回答
  •  感情败类
    2020-12-15 02:04

    I have code that processes an uploaded file in Java. The file is uploaded with the normal fileUpload control and then I call the following Java code from a button (that does a full refresh - so that the document including the uploaded file is saved). In the Java code you can do whatever checks you want (filename, filesize etc.):

    public void importFile() {
    
        facesContext = FacesContext.getCurrentInstance();
        ExternalContext externalContext = facesContext.getExternalContext();
    
        // get a handle an the uploaded file
        HttpServletRequest request = (HttpServletRequest) externalContext.getRequest();
        String fileUploadID = JSFUtil.findComponent("uploadFile").getClientId(FacesContext.getCurrentInstance());
        UploadedFile uploadedFile = ((UploadedFile) request.getParameterMap().get(fileUploadID));
    
        if (uploadedFile == null) {
            facesContext.addMessage("messages1", new FacesMessage(FacesMessage.SEVERITY_ERROR, "No file uploaded. Use the file upload button to upload a file.", ""));
            return;
        }
    
        File file = uploadedFile.getServerFile();
    
        String fileName = uploadedFile.getClientFileName();
    
        // Check that filename ends with .txt
        if (!fileName.endsWith(".txt")) {
            facesContext.addMessage("messages1", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error in uploaded file. The file must end with .txt", ""));
            return;
        }
    
        try {
            // Open the file
            BufferedReader br;
    
            br = new BufferedReader(new FileReader(file));
            String strLine;
    
            // Read File Line By Line
            while ((strLine = br.readLine()) != null) {
                // do stuff with the contents of the file
            }
    
            // Close the input stream
            br.close();
    
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            facesContext.addMessage("messages1", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error in uploaded file. Please check format of file and try again", ""));
            return;
        }
    
        facesContext.addMessage("messages1", new FacesMessage(FacesMessage.SEVERITY_INFO, "File successfully uploaded", ""));
    }
    

    With a handle on the file object you can store the file in other documents using embedObject.

提交回复
热议问题