Ja bych to jenom malinko rozsiril - jak spravne Makub naznacuje, WebServices != 
SOAP.
Na druhou stranu bych ale FTP za WS taky nepovazoval. Jako velmi prinosne bych 
videl zabalit soubor do MIME obalky - toto rozsireni necht si laskavy ctenar 
udela jako DU ;-)  Mala napoveda: muzete pouzit treba 
http://james.apache.org/mime4j/ ;-)

------------ Původní zpráva ------------
Od: Martin Kuba <ma...@ics.muni.cz>
Předmět: Re: Prenos velkych suborov do z klienta do webservice
Datum: 07.4.2009 11:52:20
----------------------------------------
Dusan Zatkovsky napsal(a):
> S tym servletom je to vyborny napad, akurat vobec netusim, ako to
> naprogramovat ( web je moja slaba stranka ) :)

Tak tady to je :-)

public class PutServlet extends HttpServlet {
     @Override
     protected void doPut(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

         ServletInputStream in = request.getInputStream();
         byte[] buffer = new byte[4096];
         BufferedOutputStream out = new BufferedOutputStream(new
FileOutputStream("/tmp/soubor"));
         int n;
         while((n=in.read(buffer))!=-1) {
             out.write(buffer,0,n);
         }
         out.close();
         in.close();
         response.setStatus(HttpServletResponse.SC_OK);
     }
}

a namapovat ho ve web.xml třeba takto:

     <servlet>
         <servlet-name>PutServlet</servlet-name>
         <servlet-class>cz.makub.PutServlet</servlet-class>
     </servlet>
     <servlet-mapping>
         <servlet-name>PutServlet</servlet-name>
         <url-pattern>/put/*</url-pattern>
     </servlet-mapping>

a klient může použít HTTP klienta z JDK:

public class PutClient {
     public static void main(String[] args) throws IOException {
         HttpURLConnection uc = (HttpURLConnection) new
URL("http://localhost:8080/putapp/put/file";).openConnection();
         uc.setRequestMethod("PUT");
         uc.setDoOutput(true);
         BufferedInputStream in = new BufferedInputStream(
                 new FileInputStream("veliky_soubor"));
         byte[] buffer = new byte[4096];
         int n;
         OutputStream out = uc.getOutputStream();
         while ((n = in.read(buffer)) != -1) {
             out.write(buffer, 0, n);
         }
         in.close();
         out.close();
         int responseCode = uc.getResponseCode();
         System.out.println("responseCode = " + responseCode);
     }
}

Samozřejmě čtení a ukládání souborů je třeba předělat
na něco reálného.

Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: ma...@ics.muni.cz
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------






Oto 'tapik' Buchta, ta...@buchtovi.cz

Odpovedet emailem