在Java Web上上传和显示图像

时间:2014-08-18 04:01:57

标签: java spring jsp spring-mvc servlets

我的简单网站正在使用Spring MVC。用户上传产品图像,网站将显示图像(带有产品名称,价格等)。数据库仅存储图像的详细信息,并将图像存储在目录中。问题是,我不确定图像存储应该在哪里。

// Creating the directory to store file
            File dir = new File(imageDirectory);
            if (!dir.exists())
                dir.mkdirs();

            // Create the file on server
            File serverFile = new File(dir.getAbsolutePath()
                    + File.separator + name);

例如,当变量imageDirectory的值为“\ temp”时,我的应用程序会将图像存储在“D:\ temp”中,我不知道如何将图像网址显示在我的网站上

当变量imageDirectory的值为“temp”时,我的应用程序将图像存储在“D:\ soft \ sts-bundle \ sts-3.5.1.RELEASE \ temp”中,我不知道如何获取图像网址在我的网站上显示

那么我应该在哪里存储上传图片以及如何获取上传的图片网址(存储在数据库中)?

1 个答案:

答案 0 :(得分:0)

为了向最终用户显示您的图像,您必须将其存储在您的网络应用程序中。

理想的方法是在您的webapp中设置一个专用文件夹,用于存储上传文件,然后将相关网址发送给最终用户。

E.g。

  //request is an instance of HttpServletRequest

  File uploadDirectory = new File(request.getSession().getServletContext().getRealPath("/uploads"));

  if (!uploadDirectory.exists()) {
      uploadDirectory.mkdirs();
  }

  File reportFile = new File(reportDirectory.getAbsolutePath(), fileName);

  String requestUrl = request.getRequestURL().toString();
  requestUrl = requestUrl.substring(0, requestUrl.lastIndexOf("/") + 1) + "uploads/" + fileName;
  return requestUrl;