gpt4 book ai didi

tomcat 服务器上的 Java 应用程序将文件保存在服务器上而不是路径上

转载 作者:行者123 更新时间:2023-11-28 22:28:17 25 4
gpt4 key购买 nike

我目前在 Tomcat 7 服务器上有一个 Java Web 应用程序,它应该生成文件并将它们保存在用户指定的路径中。当我在我的本地机器上测试它时它工作正常但是当我部署到开发服务器时,文件保存在服务器上的以下路径“conf/Catalina/localhost”中,指定路径作为名称的一部分。

例如,如果我将目录设置为我希望将文件保存到“C:\Users\kbbj\Desktop”的目录,文件将在服务器上保存为“C:\Users\kbbj\Desktop\filename.分机”。

这是我创建 Word 文件的代码(注意它保存的最后一部分):

public static void createWordDoc(Request request) throws Docx4JException {
String filename = request.study+"_data_specs_v"+request.currentVersion+".docx";

wordMLPackage = WordprocessingMLPackage.createPackage();

//Create titles
String title = request.study+" Data Specifications v."+request.currentVersion;
String subtitle = request.analysis.analysisType+" Analysis for "+request.purpose.purpose;

// Add titles to document
wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Title",title);
wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Subtitle",subtitle);
wordMLPackage.getMainDocumentPart().addParagraphOfText("");
wordMLPackage.getMainDocumentPart().addParagraphOfText("");

//Create specification table
wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Heading2", "Specifications");
factory = Context.getWmlObjectFactory();

Tbl table = factory.createTbl();
Tr tableRow = factory.createTr();

addStyledTableCell(tableRow, "Variable Name",true,null);
addStyledTableCell(tableRow, "Values",true,null);
addStyledTableCell(tableRow, "Method",true,null);
addStyledTableCell(tableRow, "Analyst Instructions",true,null);
table.getContent().add(tableRow);

System.out.println("Number of specs: "+request.specs.size());
//Add specs to table
for(Specification spec:request.specs){
Tr newRow = factory.createTr();
addTableCell(newRow, spec.variable.name!=null ? spec.variable.name : "");
addTableCell(newRow, spec.variable.codeList!=null ? spec.variable.getCodeListAsString():"");
addTableCell(newRow, spec.method!=null ? spec.method.method:"");
addTableCell(newRow, spec.instructions!=null ? spec.instructions:"");
table.getContent().add(newRow);
}


wordMLPackage.getMainDocumentPart().addObject(table);

//Save the file on project directory
String filepath = request.directory+"\\"+filename;
System.out.println("file path: "+filepath);
wordMLPackage.save(new java.io.File(filepath));
}

有什么想法吗?
感谢您的帮助!

最佳答案

不可能有两个原因:

  1. 安全性,您用来启动 tomcat 服务的用户没有 Catalina/localhost 以外的访问权限,因此您无法在有特权的侧文件夹外创建文件,如果可能的话,不建议使用 root 运行 tomcat 服务"
  2. 操作系统不同,如果您在 linux 上托管您的应用程序,那么您根本没有 c: 驱动器

建议您可以创建相对路径并使用File.mkdirs() 来创建嵌套文件夹

关于tomcat 服务器上的 Java 应用程序将文件保存在服务器上而不是路径上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com