hi,
I am writting a servlet that reads the uploaded file from InputStream data from the HttpServletRequest and write a file of that type to the server. I saw sedj's code on The jsp code works w/o a glitch for ASCII files like with .txt extension but non-ascii files (pdf/doc/jpeg) become corrupt
I wanted to know why that was the case and how i could change the code so that it works for other types files. (The file seems to be the right size and everything, but for somereason, somethign causes it to be corrupt)
Thank you very very very much for your help!!
the servlet code (taken from sedj's post) is:
I am writting a servlet that reads the uploaded file from InputStream data from the HttpServletRequest and write a file of that type to the server. I saw sedj's code on The jsp code works w/o a glitch for ASCII files like with .txt extension but non-ascii files (pdf/doc/jpeg) become corrupt
I wanted to know why that was the case and how i could change the code so that it works for other types files. (The file seems to be the right size and everything, but for somereason, somethign causes it to be corrupt)
Thank you very very very much for your help!!
the servlet code (taken from sedj's post) is:
Code:
String contentType = request.getContentType();
System.out.println("Content type is :: " +contentType);
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)) {
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
String saveFile = file.substring(file.indexOf("filename=\"") + 10);
saveFile = saveFile.substring(0, saveFile.indexOf("\n"));
saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1,saveFile.indexOf("\""));
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,contentType.length());
int pos;
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;
FileOutputStream fileOut = new FileOutputStream(saveFile);
//fileOut.write(dataBytes);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
out.println("File saved as " +saveFile);
}