1

我正在编写一个 Java EE 应用程序,我尝试从 URL 获取图像,然后将其保存在我的资源文件夹中(通过 AJAX 请求)。我的问题是,如果我不重新启动服务器,我将无法显示此图像,因为它没有加载到我的服务器上。

我正在使用 Tomcat 7、Spring、Hibernate、Primeface。

这是我保存myimage的课程

public class ImageSaver {
    final static int SIZE=1024;

    public static void fileUrl(String fAddress, String localFileName, String destinationDir) {
        OutputStream outStream = null;
        URLConnection  uCon = null;

        InputStream is = null;
        try {
            URL url = new URL(fAddress);
            byte[] buf;
            int byteRead;
            int byteWritten=0;
            outStream = new BufferedOutputStream(new FileOutputStream(destinationDir+"\\"+localFileName));
            uCon = url.openConnection();
            is = uCon.getInputStream();
            buf = new byte[SIZE];
            while ((byteRead = is.read(buf)) != -1) {
                outStream.write(buf, 0, byteRead);
                byteWritten += byteRead;
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            try {
                is.close();
                outStream.close();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void fileDownload(String fAddress,String fileName, String destinationDir){
        int slashIndex =fAddress.lastIndexOf('/');
        int periodIndex =fAddress.lastIndexOf('.');
        //String fileName=fAddress.substring(slashIndex + 1);
        if (periodIndex >=1 &&  slashIndex >= 0 && slashIndex < fAddress.length()-1){
        }
        else{
            System.err.println("path or file name.");
        }
    }

}

以及我调用函数的方式:

ImageSaver.fileDownload("http://www.mywebsite.com/myImage.jpg","myImage.jpg", "C:\\Users\\MyProject\\src\\main\\webapp\\resources\\images");

如何在不重新启动的情况下自动加载我上传的图片?哪个文件允许配置上传文件夹?如何 ?

4

1 回答 1

3

您不应该将动态检索到的图像写入您的 web 应用程序的文件夹中 - 这会为您带来一整类问题。相反,将它们保存到应用服务器根目录之外的文件夹中,并创建一个下载 servlet 来提供这些资源。

否则的危险是您将从外部来源检索一些 jsp 文件,将它们保存到您的应用程序服务器,并且在下载时应用程序服务器将愉快地在服务器端执行它。

假设你的 webapp 的目录对你的 webapp 是不可写的。这也将简化备份和更新:假设您需要安装更新或迁移到不同的服务器:您服务器上的应用程序将仅部分包含在其 *.war 文件中。如果有明确的资源目录,您可以独立备份(或放在网络共享驱动器上)

于 2013-03-21T10:23:02.800 回答