2012-09-02 6 views
1

봄철 MVC 파일 업로드 기능을 사용하여 파일을 업로드했으며/home/myfolder/images/폴더에 파일이 업로드되고 있습니다. 이제이 파일을이 실제 경로에서 다운로드하려고합니다. 내 JSP에서 테스트를 위해 나는 다음 줄Java의 실제 경로에서 파일 다운로드

<a href="<%=request.getSession().getServletContext().getRealPath("/home/images/image.jpg")%>" >download </a> 

를 작성한하지만이 링크를 클릭 할 때의 URL 내가 저장 한 이미지를 다운로드 할 수 있습니다 방법

http://localhost:8080/home/myfolder/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/myproject/home/images/image.jpg. 

에 저를 리디렉션합니다. 이 문제를 해결하기 위해 저에게 필요한 것이 있다면 알려주십시오.

답변

4

시도해보십시오 JSP에서

<!-- Handles HTTP GET requests for /resources/ ** by efficiently serving up static resources --> 
<mvc:resources mapping="/images/**" location="file:/home/images"/> 
<!-- Allows for mapping the DispatcherServlet to "/" by forwarding static resource requests to the container's default Servlet --> 
<mvc:default-servlet-handler/> 

: 당신의 응답을 Spring : serving static resources outside context root

+0

고마워요. 리튬, 예, 할 수 있어요. 제작 용 전쟁 파일을 만들 때 모든 로컬 이미지가 제 제작 전쟁에 추가 될 것이고 프로덕션에서 모든 이미지를 백업해야 할 필요가 있습니다. 나는 아직 시도하지 않았지만 당신이 말한 것은 위의 단계를 수행해야합니까? – user965884

+0

예. 이 dir은 이제 살아있는 dir입니다. 그래서 DB처럼 유지해야합니다.나중에 빌드 프로세스에 추가하지는 않겠지 만, 장래에 테스트하는 모든 이미지를 프로덕션으로 복사하고 싶지는 않을 것입니다. 또한 앞으로는 이미지를 복사하여 테스트 환경으로 복사하려고 할 것입니다. 이 경우, location = "file :/home/images/prod, file :/home/images/test" 두 개의 디렉토리를 구성한 다음 스프링 프로파일을 사용하여 파일 업로드를 알맞은 위치로 지정할 수 있습니다. 그리고 수동으로/home/images/test에서/home/images/prod로 이미지를 복사하십시오. – Solubris

+0

안녕하세요 리튬, 위의 솔루션을 구현하려고했다 내 봄 servlet.xml 있음 \t \t 그래서 내 파일을 저장하는 동안 내 경로는/home/images/right가 될 것입니다./home/images/폴더에 이미지를 저장하고 위의 경로로 접근 할 수 없습니다. 예 : user965884

2

Webapps 폴더 외부의 파일은 응용 프로그램 컨테이너에서 처리 할 수 ​​없습니다.

일부 가능성 :

1) 응용 프로그램 컨테이너에 웹 어플리케이션 폴더 아래의 폴더에 업로드합니다. E. g.

당신의 웹 어플리케이션 폴더가 주어/집/MyFolder에/톰캣/웹 어플리케이션 /을 myApp/ 당신은/집에 업로드 할 수/MyFolder에/Tomcate/웹 어플리케이션 /을 myApp//

업로드 된 파일이 제공 될 수있는이 방법을 업로드 응용 프로그램 컨테이너에 의해.

2) 응용 프로그램 컨테이너에서 기호 링크를 통해 업로드 폴더에 액세스 할 수있게 만드십시오. 이 작업을 수행하려면 컨테이너의 설정을 변경해야 할 수도 있습니다.

3) 응용 프로그램 컨테이너 (예 : httpd) 앞에 웹 서버를 사용하는 경우 웹 서버에서 정적 파일을 제공하도록합니다.

4) 임의의 파일에서 읽은 내용을 클라이언트에 제공하는 사용자 자신의 서블릿을 작성하십시오. 이 사용

+0

안녕 분실 감사 : 여기

<img src="/images/image.jpg" /> 

스레드입니다. myProject/upload/폴더에 파일을 업로드하고 거기에 저장했지만 http : // localhost : 8080/myProject/upload/image.jpg를 사용하여 액세스하려고합니다. HTTP 상태 404 오류가 발생합니다. 이 문제에 액세스하려면 일부 설정을 수행해야합니까? 내가해야 할 일은 "심볼릭 링크를 통해 업로드 폴더를 응용 프로그램 컨테이너에 액세스 할 수 있도록 설정하십시오."라는 의미입니다. – user965884

+0

방금 ​​tomcat/webapps에 myProject와 uplaod 폴더를 만들었습니다. – user965884

+0

'tomcat/webapps'에서 webapp의 폴더는 무엇입니까? (즉, 귀하의 webapp가 배포 된 맥락)'myProject'입니까? – lost