Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用docx4j获取.docx文件的InputStream_Java_Ftp_Docx4j - Fatal编程技术网

Java 使用docx4j获取.docx文件的InputStream

Java 使用docx4j获取.docx文件的InputStream,java,ftp,docx4j,Java,Ftp,Docx4j,我有一个将.docx文件保存到FTP服务器的应用程序。要在FTP服务器上存储文件,FTP客户端需要文件的InputStream,但问题来了。我使用docx4j将我想要的文本保存到文件系统上的临时文件中,然后获取该文件的输入流并将其存储在FTP服务器上。但当我试图打开它时,它说它已损坏。以下是我的示例代码: public void setText(String text) throws BusinessException { //My utility class, used for ft

我有一个将.docx文件保存到FTP服务器的应用程序。要在FTP服务器上存储文件,FTP客户端需要文件的InputStream,但问题来了。我使用docx4j将我想要的文本保存到文件系统上的临时文件中,然后获取该文件的输入流并将其存储在FTP服务器上。但当我试图打开它时,它说它已损坏。以下是我的示例代码:

 public void setText(String text) throws BusinessException {
    //My utility class, used for ftp processes(such as storing, deleting files
    FtpProcesses ftp = new FtpProcesses(Consts.ADMIN_FTP_USERNAME, UserType.ADMIN); 
    String filePath = ftp.getFileFolderRelativePath(FileType.ARTICLE, String.valueOf(this.getVersionsCount()), String.valueOf(this.getId()));
    File outputFile;
    InputStream stream;
    Text fileText;
    R run;
    P paragraph;
    ObjectFactory factory = Context.getWmlObjectFactory();
    try {
        outputFile = File.createTempFile("tempFile", ".docx");
        paragraph = factory.createP();
        run = factory.createR();
        fileText = factory.createText();
        fileText.setValue(text);
        run.getContent().add(fileText);
        paragraph.getContent().add(run);
        WordprocessingMLPackage word = WordprocessingMLPackage.createPackage();
        word.getMainDocumentPart().addObject(paragraph);
        word.save(outputFile);
        stream = new FileInputStream(outputFile);
        ftp.uploadFile(filePath, stream);
    } catch (IOException | Docx4JException e) {
        e.printStackTrace();
        throw new BusinessException(Errors.FILE_UPLOAD_ERROR);
    }
}

如您所见,我在保存文件后直接获取InputStream。是否有其他方法可以通过docx4j将其保存到ftp上?

您在ftp上传中使用什么模式?我使用的是流式传输模式。您是否尝试按此处所述进行保存?@MariusŽilėnas感谢您询问该模式。我使用了错误的模式-正确的模式是二进制文件类型。现在一切都好了,它正在工作。很高兴能帮上忙,听说它正在工作:)。