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 -~----------~----~----~----~------~----~------~--~---