【问题标题】:uploading file to web root directory using jsf Primefaces使用 jsf Primefaces 将文件上传到 Web 根目录
【发布时间】:2017-09-26 18:58:38
【问题描述】:

我正在尝试将客户端徽标存储到 "src/main/webapp/clientImage/clientcode" clientcode 目录将根据不同的 2 客户端创建。
例如,如果客户端代码为 TEST,则完整路径将类似于 "src/main/webapp/clientImage/TEST",当我们上传客户端图像时,客户端徽标将位于“TEST”目录下。所以上传客户端标志后(假设图片名称是“test.jpeg”,那么完整的目录将是“src/main/webapp/clientImage/TEST/test.jpeg”上传客户端标志的代码是:

`public boolean upload(UploadedFile uploadFile) {
String LOGO_PATH= "/clientImage/";
String fileName = uploadFile.getFileName();
String realPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath(LOGO_PATH + selectedClient.getClientCode());
File f = new File(realPath);
if (!f.exists()) {
        f.mkdirs();
        logger.debug("Directory created : {}", f.getName());
}
try {
new UserUtils().copyFile(fileName, uploadFile.getInputstream(), realPath);
            selectedClient.setLogo(fileName);
saveClient();
FacesMessage msg = new FacesMessage("Success! ", uploadFile.getFileName() + " set as logo.");
FacesContext.getCurrentInstance().addMessage(null, msg);
return true;
} catch (IOException e) {
    logger.error("{}", e);
    return false;
}
}

`

问题:: 我的问题是当我为 TEST 客户端上传徽标时,我得到的 realPath 是“C:\Users\narendra\tls_workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\iclock\clientImage\测试”

realPath 应该是 "src/main/webapp/clientImage/TEST/test.jpeg" 和 logo 应该存储到 TEST 目录中,但 logo 甚至没有进入该目录

【问题讨论】:

    标签: java jsf file-upload primefaces realpath


    【解决方案1】:

    您没有运行源本身。您的源文件被编译成类,然后您的类和资源被打包成一个 Web 应用程序存档 - 一个 WAR 文件。所以你的 realPath 不在 src 中,它在你的 WAR 部署的地方。在您的情况下,它在 Eclipse 的 tmp 文件中,因为您是从 Eclipse 运行它。

    将文件上传到源目录的想法是荒谬的,因为您的源目录不会部署到服务器 - 打包的 WAR 会。如果您出售您的 Web 应用程序,您可能不会将您的源代码发送给您的客户 - 您将向他们发送一个可执行文件,即 WAR 文件。

    您也不应该在 WAR 中保留用户数据。您的 WAR 在其运行时应该是不可变的。相反,您应该向服务器或 Java 询问 Temp 目录或某种数据目录。例如。 Wildfly 服务器具有以下系统属性:

    jboss.server.data.dir - 服务器将用于持久化的目录 数据文件存储 jboss.server.temp.dir - 服务器将存储的目录 用于临时文件存储

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2012-04-07
      • 2014-02-03
      • 2013-07-23
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2013-04-09
      • 2017-03-05
      相关资源
      最近更新 更多