2014-03-27 2 views
0

이것은 내 수업입니다 :자바에서 파일이나 이미지를 서버에 업로드하기위한 나머지 웹 서비스 작성 방법

패키지 pkg.rest;

<html> 
<body> 


    <h1>File Upload with Jersey</h1> 

    <form action="rest/file/upload" method="post" enctype="multipart/form-data"> 

     <p> 
     Select a file : <input type="file" name="file" size="45" /> 
     </p> 

     <input type="submit" value="Upload It" /> 
    </form> 

</body> 
</html> 

web.xml 파일 : 나는 서버에 파일을 업로드하려고 할 때

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>REST_WS</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

것은 다음 조치가 나는 클라이언트를 작성하지 힘 실시합니다

import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.POST; 
import javax.ws.rs.Path; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import com.sun.jersey.core.header.FormDataContentDisposition; 
import com.sun.jersey.multipart.FormDataParam; 

@Path("/file") 
public class UploadFileService { 

    @POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadFile(
      @FormDataParam("file") InputStream uploadedInputStream, 
      @FormDataParam("file") FormDataContentDisposition fileDetail) { 

     String uploadedFileLocation = "d://uploaded/" 
       + fileDetail.getFileName(); 

     // save it 
     writeToFile(uploadedInputStream, uploadedFileLocation); 

     String output = "File uploaded to : " + uploadedFileLocation; 

     return Response.status(200).entity(output).build(); 

    } 

    // save uploaded file to new location 
    private void writeToFile(InputStream uploadedInputStream, 
      String uploadedFileLocation) { 

     try { 
      OutputStream out = new FileOutputStream(new File(
        uploadedFileLocation)); 
      int read = 0; 
      byte[] bytes = new byte[1024]; 

      out = new FileOutputStream(new File(uploadedFileLocation)); 
      while ((read = uploadedInputStream.read(bytes)) != -1) { 
       out.write(bytes, 0, read); 
      } 
      out.flush(); 
      out.close(); 
     } catch (IOException e) { 

      e.printStackTrace(); 
     } 

    } 

} 

이 업로드 내 HTML 파일입니다 직접 바람둥이 서버에 html 파일을 실행하고 그것에 액세스하려고하면 우리는 내가 처음으로 쓰고있어 그래서 내가 도와주세요 도와주세요 변경해야 할 일을 도와주세요.

답변

0

web.xml에 충분한 내용을 넣지 않았으므로 컨테이너가 Jersey 서블릿에 요청을 라우팅하는 방법을 알지 못합니다.

은 당신의 web.xml에 다음을 추가

<servlet> 
    <servlet-name>UploadServlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>pkg.rest</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>UploadServlet</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
+0

우리는이 프로젝트를 실행하기 위해 클라이언트를 만들거나 직접해야합니까? – user3432979

+0

이 프로젝트를 tomcat – Alvin

+0

에서 직접 실행하십시오. StandardWrapper.Throwable excpetion이 – user3432979

0

는 당신이 필요 패턴/휴식/* 모든 서비스로 처리 할 URL의.