【问题标题】:Java app on tomcat server saving files on server instead of pathTomcat服务器上的Java应用程序将文件保存在服务器而不是路径上
【发布时间】:2015-09-29 15:51:52
【问题描述】:

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

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

这是我创建 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));
    }

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

【问题讨论】:

    标签: java file tomcat io


    【解决方案1】:

    不可能有两个原因:

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

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

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2012-06-23
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多