protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); Part part = request.getPart("file"); BufferedImage img ; try { img = ImageIO.read(part.getInputStream()); ///////↓↓うまくいきません。(java.io.FileNotFoundException)) //ImageIO.write(img, "jpg", new FileOutputStream("/WEB-INF/data/test.jpg")); //ImageIO.write(img, "jpg", new FileOutputStream("../../WebContent/WEB-INF/data/test2.jpg")); ///////↓↓絶対パスを直接指定しても保存される(Eclipseの作業フォルダから見える) // ImageIO.write(img, "jpg", new FileOutputStream("C:/Users/Yuji/workspace/jsp_servlet2/WebContent/WEB-INF/data/test.jpg")); ///////↓↓「getServletContext().getRealPath」を使うと以下のディレクトリに保存される ////(C:\Users\Admin\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\jsp_servlet2\WEB-INF\data\test.jpg) // ImageIO.write(img, "jpg", new FileOutputStream(getServletContext().getRealPath("/WEB-INF/data/test.jpg"))); } catch (IOException e) { e.printStackTrace(); } }//end doPost HTMLからfileのデータを受け取りテストとして特定のフォルダ(ここでは/WEB-INF/dataの中)に保存したいのですが上手くいきません。 上記のソースにもコメントとして書いていますが 直接絶対パスを指定するとEclipseの作業ファルダから見える所に(意図した所)保存されますが この場合だとWeb上のアップした時に困ります・・・。 また、「getServletContext().getRealPath」を使うと同じ「/WEB-INF/data/」の中でも想定しているものとは全く違うディレクトリに保存されました。 出来ればサーブレット?から相対パスを指定してEclipseのプロジェクト内のファルダに保存したいと考えているのですがうまくいきません。 上記のソースを記述しているサーブレトから /WEB-INF/data/ への相対パスも含め色々指定してみましたが出来ませんでした。 (../../WebContent/WEB-INF/data/test.jpgや/WebContent/WEB-INF/data/test.jpgや/WEB-INF/data/test.jpg等) ちなみにプロジェクトフォルダからサーブレットへのパスは以下の通りです。 「/jsp_servlet2/src/websitePrototype1/FileUpServlet」 どうすれば解決するのでしょうか?
↧