Jboss图像上传和http访问显示图像

Jey*_*har 3 java jboss image-uploading

我通过使用以下代码获取绝对路径将图像上传到jboss服务器

getServletContext().getRealPath("");
Run Code Online (Sandbox Code Playgroud)

上传的图像被移动到绝对路径,我可以使用http://test.com:8080/image.jpg访问图像

我的问题是图像被上传到jboss服务器的tmp目录,所以我在下一次部署中丢失了上传的图像.我尝试将图像上传到各种路径以使其工作\ jboss-5.0.1.GA\server\default\deploy和此处\ jboss-5.0.1.GA\server\default\work\jboss.web\localhost以及但失败了,我无法使用http://test.com:8080/image.jpg访问该图像

请帮助我...

maq*_*jav 6

您可以添加新上下文以指定访问外部文件夹的路径.

适用于Jboss 4和旧版本的步骤:

  1. 打开你的文件/YOURINSTANCE_JBOSS/deploy/jboss-web.deployer/server.xml.
  2. Context在标签中定义新内容<Host name=”localhost” ...>

    例:

    <Host name=”localhost” ...>
    <Context path=”/myfolder” docBase=”/home/username/my_images” reloadable=”true”></Context>
    
    Run Code Online (Sandbox Code Playgroud)

    其中/ myfolder将是您将用于访问文件的路径,/ home/username/my_images将是您要上传图片的文件夹.

  3. 重启JBoss

现在,您将能够使用下一个路径访问您的文件:

http://yourserver:yourport/myfolder/filename
Run Code Online (Sandbox Code Playgroud)

Jboss 5的步骤:

  1. 使用下一个内容创建一个名为context.xmlWEB-INF文件夹的新文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context allowLinking="true" cookies="true" crossContext="true" override="true">
        <Resources allowLinking="true" className="YOUR_PACKAGE.MyResources" homeDir="/home/username/my_images" />
    </Context>
    
    Run Code Online (Sandbox Code Playgroud)

    其中className是将访问资源的java类,homeDir是您的外部目录.

  2. 根据此链接创建一个新类来访问文件中定义的资源context.xml

    例:

    public class MyResources extends FileDirContext {
    
    }
    
    Run Code Online (Sandbox Code Playgroud)

现在,您将能够使用下一个功能访问您的文件:

request.getServletContext().getResourceAsStream(uri);
Run Code Online (Sandbox Code Playgroud)

适用于Jboss 5和旧版本的步骤:

  1. context.xml使用下一个内容创建一个名为WEB-INF文件夹的新文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <Context allowLinking="true" cookies="true" crossContext="true" override="true">  
        <Resources allowLinking="true" homeDir="/home/username/my_images" />  
    </Context>
    
    Run Code Online (Sandbox Code Playgroud)

    其中HOMEDIR是外部目录.

  2. 创建一个符号链接:YourDeployedProject.war/myfolder链接到/home/username/my_images

    视窗:

    mklink /D C:\YOUR_JBOSS_SERVER\server\default\deploy\YourDeployedProject.war\myfolder C:\users\YOURUSER\my_images
    
    Run Code Online (Sandbox Code Playgroud)

    Linux的:

    YourDeployedProject.war# ln -s /home/username/my_images myfolder
    
    Run Code Online (Sandbox Code Playgroud)

现在,您将能够使用下一个路径访问您的文件:

http://localhost:8080/DeployedProject/myfolder/filename
Run Code Online (Sandbox Code Playgroud)

Jboss 7的步骤:

JBoss 7不允许使用以前JBoss版本的任何方法,因此最简单的解决方案是实现一个Servlet来访问您的文件,就像在下一个链接中一样.