Java 使用docx4j获取.docx文件的InputStream
我有一个将.docx文件保存到FTP服务器的应用程序。要在FTP服务器上存储文件,FTP客户端需要文件的InputStream,但问题来了。我使用docx4j将我想要的文本保存到文件系统上的临时文件中,然后获取该文件的输入流并将其存储在FTP服务器上。但当我试图打开它时,它说它已损坏。以下是我的示例代码: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
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感谢您询问该模式。我使用了错误的模式-正确的模式是二进制文件类型。现在一切都好了,它正在工作。很高兴能帮上忙,听说它正在工作:)。