Hi,

I did not bother looking at the code, but is there a reason why you
bother implementing this ?
You could use the apache-commons fileupload implementation, that works
just fine and has been tested and used in many websites.

David

On Fri, Jul 17, 2009 at 3:48 PM, Petein<majestyel...@gmail.com> wrote:
>
> Hi. I have this servlet for file uploading.
>
> import java.io.DataInputStream;
>
> import java.io.File;
>
> import java.io.FileNotFoundException;
>
> import java.io.FileOutputStream;
>
> import java.io.IOException;
>
> import java.io.PrintWriter;
>
>
>
> import javax.servlet.ServletConfig;
>
> import javax.servlet.ServletException;
>
> import javax.servlet.http.HttpServlet;
>
> import javax.servlet.http.HttpServletRequest;
>
> import javax.servlet.http.HttpServletResponse;
>
>
>
> @SuppressWarnings("serial")
>
> public class myUploadServlet extends HttpServlet {
>
>
>
>        public void init(ServletConfig config) throws ServletException {
>
>                super.init(config);
>
>        }
>
>
>
>        public void doGet(HttpServletRequest request, HttpServletResponse
> response)
>
>                        throws ServletException {
>
>
>
>        }
>
>
>
>        public void doPost(HttpServletRequest request, HttpServletResponse
> response)
>
>                        throws ServletException {
>
>
>
>                String contentType = request.getContentType();
>
>
>
>                if ((contentType != null)
>
>                                && (contentType.indexOf("multipart/form-data") 
> >= 0)) {
>
>                        DataInputStream in;
>
>                        byte dataBytes[];
>
>                        try {
>
>                                in = new 
> DataInputStream(request.getInputStream());
>
>
>
>                                // we are taking the length of Content type 
> data
>
>                                int formDataLength = 
> request.getContentLength();
>
>                                dataBytes = new byte[formDataLength];
>
>                                int byteRead = 0;
>
>                                int totalBytesRead = 0;
>
>                                // this loop converting the uploaded file into 
> byte code
>
>                                while (totalBytesRead < formDataLength) {
>
>                                        byteRead = in.read(dataBytes, 
> totalBytesRead,
>
>                                                        formDataLength);
>
>                                        totalBytesRead += byteRead;
>
>                                }
>
>
>
>                        } catch (IOException e) {
>
>                                e.printStackTrace();
>
>                                return;
>
>                        }
>
>
>
>                        String file = new String(dataBytes);
>
>                        // for saving the file name
>
>                        String saveFile = 
> file.substring(file.indexOf("filename=\"") + 10);
>
>                        saveFile = saveFile.substring(0, 
> saveFile.indexOf("\n"));
>
>                        saveFile = 
> saveFile.substring(saveFile.lastIndexOf("\\") + 1,
>
>                                        saveFile.indexOf("\""));
>
>
>
>                        //System.out.println("saveFile = " + saveFile);
>
>                        int lastIndex = contentType.lastIndexOf("=");
>
>                        String boundary = contentType.substring(lastIndex + 1, 
> contentType
>
>                                        .length());
>
>                        int pos;
>
>                        // extracting the index of file
>
>                        pos = file.indexOf("filename=\"");
>
>                        pos = file.indexOf("\n", pos) + 1;
>
>                        pos = file.indexOf("\n", pos) + 1;
>
>                        pos = file.indexOf("\n", pos) + 1;
>
>                        int boundaryLocation = file.indexOf(boundary, pos) - 4;
>
>                        int startPos = ((file.substring(0, 
> pos)).getBytes()).length;
>
>                        int endPos = ((file.substring(0, 
> boundaryLocation)).getBytes
> ()).length;
>
>
>
>                        // creating a new file with the same name and writing 
> the content
> in
>
>                        // new file
>
>
>
>                        FileOutputStream fileOut;
>
>                        PrintWriter out = null;
>
>                        try {
>
>                                out = response.getWriter();
>
>                        } catch (IOException e2) {
>
>                                // TODO Auto-generated catch block
>
>                                e2.printStackTrace();
>
>                        }
>
>
>
>                        String path = "Images" + File.separator + saveFile;
>
>                        try {
>
>                                fileOut = new FileOutputStream(path);
>
>
>
>                                fileOut.write(dataBytes, startPos, (endPos - 
> startPos));
>
>                                fileOut.flush();
>
>                                fileOut.close();
>
>                        } catch (FileNotFoundException e) {
>
>                                response.setContentType("text/html");
>
>                                
> response.setContentLength(e.getMessage().length());
>
>                                out.println( /* e.getMessage() */"File Not 
> Found");
>
>                                // e.printStackTrace();
>
>                                return;
>
>                        } catch (IOException e) {
>
>                                response.setContentType("text/html");
>
>                                
> response.setContentLength(e.getMessage().length());
>
>                                out.println( /* e.getMessage() */"Problem 
> reading the file");
>
>                                // e.printStackTrace();
>
>                                return;
>
>                        }
>
>
>
>                        File f = new File(path);
>
>                        if (f.length() == 0) { // empty file
>
>                                f.delete();
>
>                                try {
>
>                                        out = response.getWriter();
>
>                                } catch (IOException e1) {
>
>                                        e1.printStackTrace();
>
>                                }
>
>                                response.setContentType("text/html");
>
>                                String msg = "File is empty or doesnt exist";
>
>                                response.setContentLength(msg.length());
>
>                                out.println(msg);
>
>                        } else {
>
>                                response.setContentType("text/html");
>
>                                String msg = "File: " + f.getName();
>
>                                response.setContentLength(msg.length());
>
>                                out.println(msg);
>
>                        }
>
>
>
>                }
>
>
>
>        }
>
>
>
> }
>
>
>
> It seems correct to my eyes but i get this error:
>
> <h2>HTTP ERROR: 500</h2><pre>INTERNAL_SERVER_ERROR</pre>
> <p>RequestURI=/myfrwa/upload</p><h3>Caused by:</
> h3><pre>java.lang.IndexOutOfBoundsException
>        at java.io.FileOutputStream.writeBytes(Native Method)
>        at java.io.FileOutputStream.write(FileOutputStream.java:260)
>        at fr.server.myUploadServlet.doPost(myUploadServlet.java:94)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> 487)
>        at org.mortbay.jetty.servlet.ServletHandler.handle
> (ServletHandler.java:362)
>        at org.mortbay.jetty.security.SecurityHandler.handle
> (SecurityHandler.java:216)
>        at org.mortbay.jetty.servlet.SessionHandler.handle
> (SessionHandler.java:181)
>        at org.mortbay.jetty.handler.ContextHandler.handle
> (ContextHandler.java:729)
>        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 405)
>        at org.mortbay.jetty.handler.HandlerWrapper.handle
> (HandlerWrapper.java:152)
>        at org.mortbay.jetty.handler.RequestLogHandler.handle
> (RequestLogHandler.java:49)
>        at org.mortbay.jetty.handler.HandlerWrapper.handle
> (HandlerWrapper.java:152)
>        at org.mortbay.jetty.Server.handle(Server.java:324)
>        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> 505)
>        at org.mortbay.jetty.HttpConnection$RequestHandler.content
> (HttpConnection.java:843)
>        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
>        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
>        at org.mortbay.jetty.HttpConnection.handl
>
>
> Anyone who can tell me what is going on?
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to Google-Web-Toolkit@googlegroups.com
To unsubscribe from this group, send email to 
google-web-toolkit+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to