commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Cooper <mart...@apache.org>
Subject Re: [FILEUPLOAD] feasibility of using fileupload apache api without boundary
Date Tue, 24 Nov 2009 16:04:49 GMT
The boundary is defined by RFC 1867, which is the spec that Commons
FileUpload implements. The RFC is linked to from the FileUpload home
page, which you referenced. I'd recommend reading that spec.

If you don't want the boundary for some reason (and I can't think of
any good reason for removing it), then you don't want Commons
FileUpload. You'll likely have to create your own protocol in place of
RFC 1867.

--
Martin Cooper


On Tue, Nov 24, 2009 at 7:57 AM,  <vishal.mestri@techprocess.co.in> wrote:
> hi all,
>
> i am using file upload api for io operation to download files on server
> using multipart/form-data.
>
> link given below:-
>
> http://commons.apache.org/fileupload
>
>
>
> If we are using normal html file for upload no issue, browser takes care of
> "boundary"...
>
>
>
> but if we write core java app to connect to filedownload app, we need to set
> "boundary" manually...
>
> I have set boundary manually,it works.But it does not work without boundary.
>
>
>
> is it possible to download files without boundary?
>
> is there any other api which can do it?
>
>
>
> if I remove boundary from code it gives me error:
>
> org.apache.commons.fileupload.FileUploadException: the request was rejected
> because no multipart boundary was found
>
>
>
> my html code being used to connect to filedownload app:-
>
> -----------------------------
>
> <html>
>
> <head>
>
> <script language="JavaScript">
>
> function show(){}
>
>  </script>
>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
>
> <title>Insert title here</title>
>
> </head>
>
> <body>
>
> <form AUTOCOMPLETE="off"  name="addFiles" method="post"
> action="https://tpslvl0109:8443/FileDownload/pushFile"
> enctype="multipart/form-data">
>
> username:<input type=text name=username id=username value="myusername"><br>
>
> password:<input type=password name=password id=password
> value="mypassword"><br>
>
> Input file1:<input name="inputfile1" type="file" id="inputfile1"
> size="55"><br>
>
> <input type=submit name=submit value=submit onClick="show()" >
>
> </form></body></html>
>
> -----------------------------
>
> my core java client app used to connect to same filedownload app
>
> ---------------------------------
>
> import java.io.DataOutputStream;
>
> import java.io.File;
>
> import java.io.FileInputStream;
>
> import java.io.InputStream;
>
> import java.io.InputStreamReader;
>
> import java.io.Reader;
>
> import java.net.HttpURLConnection;
>
> import java.net.URL;
>
> import javax.net.ssl.HostnameVerifier;
>
> import javax.net.ssl.HttpsURLConnection;
>
> import javax.net.ssl.SSLContext;
>
> import javax.net.ssl.SSLSession;
>
> import javax.net.ssl.TrustManager;
>
> import javax.net.ssl.X509TrustManager;
>
>
>
> public class connect implements HostnameVerifier{
>
>      public connect(){}
>
>      public void try_connect(){
>
>      try {
>
>              String boundary =  "*****";
>
>            System.setProperty( "java.protocol.handler.pkgs" ,
> "javax.net.ssl" );
>
>            java.security.Security.addProvider( new
> com.sun.net.ssl.internal.ssl.Provider() );
>
>            TrustManager[] trustAllCerts = new TrustManager[] {
>
>                        new X509TrustManager(){
>
>                              public java.security.cert.X509Certificate[]
> getAcceptedIssuers(){
>
>                                    return null;
>
>                              }
>
>                        public void checkClientTrusted(
> java.security.cert.X509Certificate[] certs, String authType ) { }
>
>                              public void checkServerTrusted(
> java.security.cert.X509Certificate[] certs, String authType ) { }
>
>                        }
>
>                  };
>
>            SSLContext sc = SSLContext.getInstance( "SSL" );
>
>            sc.init( null, trustAllCerts, new java.security.SecureRandom()
> );
>
>            HttpsURLConnection.setDefaultSSLSocketFactory(
> sc.getSocketFactory() );
>
>            URL url = new URL("https", "tpslvl0109", 8443,
> "/FileDownload/pushFile");
>
>            System.out.println(url.getQuery());
>
>             HttpsURLConnection m_oHttpURLConnection =  (HttpsURLConnection)
> url.openConnection();
>
>            m_oHttpURLConnection.setDoInput( true );
>
>            m_oHttpURLConnection.setDoOutput( true );
>
>            m_oHttpURLConnection.setUseCaches( false );
>
>            m_oHttpURLConnection.setRequestProperty("Connection",
> "Keep-Alive");
>
>            m_oHttpURLConnection.setRequestProperty( "Content-Type",
> "multipart/form-data;boundary="+boundary );
>
>            m_oHttpURLConnection.setAllowUserInteraction( true );
>
>            m_oHttpURLConnection.setRequestMethod("POST");
>
>            m_oHttpURLConnection.setInstanceFollowRedirects( true );
>
>           ( ( HttpsURLConnection )( m_oHttpURLConnection )
> ).setHostnameVerifier( this );
>
>
>
>          m_oHttpURLConnection.connect();
>
>          DataOutputStream dos = null;
>
>              String exsistingFileName =
> "D:\\projects\\104-FileDownload\\TestFilefrom.txt";
>
>          String lineEnd = "\r\n";
>
>          String twoHyphens = "--";
>
>              dos = new DataOutputStream(
> m_oHttpURLConnection.getOutputStream() );
>
>          dos.writeBytes(twoHyphens + boundary + lineEnd);
>
>                           dos.writeBytes("Content-Disposition: form-data;
> name=username ;  " + lineEnd );
>
>                           dos.writeBytes(lineEnd);
>
>                           dos.writeBytes("myusername");
>
>                           dos.writeBytes(lineEnd);
>
>                           dos.writeBytes(twoHyphens + boundary + lineEnd);
>
>                           dos.writeBytes("Content-Disposition: form-data;
> name=password ; " + lineEnd );
>
>                           dos.writeBytes(lineEnd);
>
>                           dos.writeBytes("mypassword");
>
>                           dos.writeBytes(lineEnd);
>
>
>
>                           dos.writeBytes(twoHyphens + boundary + lineEnd);
>
>                           dos.writeBytes("Content-Disposition: form-data;
> name=\"upload\";"
>
>                              + " filename=\"" + exsistingFileName +"\""
+
> lineEnd );
>
>                           dos.writeBytes(lineEnd);
>
>                           FileInputStream fileInputStream = new
> FileInputStream( new
>
>                                                   File(exsistingFileName)
> );
>
>                           int bytesRead, bytesAvailable, bufferSize;
>
>                                      byte[] buffer;int maxBufferSize
=
> 1*1024*1024;
>
>                           bytesAvailable = fileInputStream.available();
>
>                           bufferSize = Math.min(bytesAvailable,
> maxBufferSize);
>
>                           buffer = new byte[bufferSize];
>
>                           bytesRead = fileInputStream.read(buffer, 0,
> bufferSize);
>
>                           while (bytesRead > 0)
>
>                           {
>
>                            dos.write(buffer, 0, bufferSize);
>
>                            bytesAvailable = fileInputStream.available();
>
>                            bufferSize = Math.min(bytesAvailable,
> maxBufferSize);
>
>                            bytesRead = fileInputStream.read(buffer, 0,
> bufferSize);
>
>                           }
>
>                           dos.writeBytes(lineEnd);
>
>                           dos.writeBytes(twoHyphens + boundary + twoHyphens
> + lineEnd);
>
>                           fileInputStream.close();
>
>                           dos.flush();
>
>                           dos.close();
>
>          System.out.println("It's Connected");
>
>         InputStream is = m_oHttpURLConnection.getInputStream (  ) ;
>
>      if  ( is == null )   {
>
>          throw new Exception ( "Got a null content object!" ) ;
>
>       }
>
>      StringBuffer putBackTogether = new StringBuffer (  ) ;
>
>      Reader r = new InputStreamReader ( is, "UTF-8" ) ;
>
>      char [  ]  cb = new char [ 2048 ] ;
>
>      int amtRead = r.read ( cb ) ;
>
>      while  ( amtRead  >  0 )   {
>
>          putBackTogether.append ( cb, 0, amtRead ) ;
>
>          amtRead = r.read ( cb ) ;
>
>       }
>
>      String pageSource = putBackTogether.toString (  ) ;
>
>      System.out.println(pageSource);
>
>            } catch (Exception e){
>
>                  e.printStackTrace();
>
>            }
>
>      }
>
>
>
>      public boolean verify(String hostname, SSLSession session) {
>
>            return true;
>
>      }
>
>      public static void main(String[] args) {
>
>                        try{connect c=new connect();
>
>                        c.try_connect();}catch(Exception e){
>
>                                    e.printStackTrace(System.out);
>
> }}                      }
>
> ---------------------------------
>
>
>
> Disclaimer: ""Unless indicated otherwise, the information contained in this message is
privileged and confidential, and is
> intended only for the use of the addressee(s) named above and others who have been specifically
authorized to receive it.
> If you are not the intended recipient, you are hereby notified that any dissemination,
distribution or copying of this
> message and/or attachments is strictly prohibited. TechProcess Solutions Ltd. accepts
no liability for any damage caused by
> any virus transmitted by this email. Furthermore, the company does not warrant a proper
and complete transmission of this
> information, nor does it accept liability for any delays. If you have received this message
in error, please contact the
> sender and delete the message. Thank you.""
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message