Use request object to upload file using JSP.
1.. make an html page from where u user input tag with file type..
this page should be only one input tag.... not more than one..
form tage should use encrype="multipart/form-data".
2.. then use this code... on JPS side....
this is my Bean... where i send request as parameter...
and FileServerPath is the target location.
3.. this method return false, if fails and enter the error
into ErrorMessage gloabal variable.
public boolean FileUploadProcess(javax.servlet.http.HttpServletRe quest
request,
String FileServerPath)
{
String contentType = request.getContentType();
if ((contentType != null) &&
(contentType.indexOf("multipart/form-data") >= 0))
{
try
{
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());
//out.println(boundary);
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;
String tmp_file = saveFile.toLowerCase();
if (tmp_file.equals(this._GIF) ||
tmp_file.equals(this._JPEG) ||
tmp_file.equals(this._JPG) || tmp_file.equals(this._PNG))
{
this.FileUserName = saveFile;
this.FileNewName = (new java.util.Date().getTime()) +
saveFile;
//System.out.println("File path = " +
FileServerPath+this.FileNewName);
FileOutputStream fileOut = new
FileOutputStream(FileServerPath +
this.FileNewName);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
return true;
}
else
{
this.ErrorMessage = "Invalid File Format. " +
"File Format should be .png, .gif,
.jpg or .jpeg.";
return false;
}
}
catch (Exception exception)
{
this.ErrorMessage = exception.getMessage();
return false;
}
}
else
{
this.ErrorMessage = "Ilegal ENCTYPE : must be
multipart/form-data\n" +
"ENCTYPE set = " + contentType;
return false;
}
}
1.. make an html page from where u user input tag with file type..
this page should be only one input tag.... not more than one..
form tage should use encrype="multipart/form-data".
2.. then use this code... on JPS side....
this is my Bean... where i send request as parameter...
and FileServerPath is the target location.
3.. this method return false, if fails and enter the error
into ErrorMessage gloabal variable.
public boolean FileUploadProcess(javax.servlet.http.HttpServletRe quest
request,
String FileServerPath)
{
String contentType = request.getContentType();
if ((contentType != null) &&
(contentType.indexOf("multipart/form-data") >= 0))
{
try
{
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());
//out.println(boundary);
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;
String tmp_file = saveFile.toLowerCase();
if (tmp_file.equals(this._GIF) ||
tmp_file.equals(this._JPEG) ||
tmp_file.equals(this._JPG) || tmp_file.equals(this._PNG))
{
this.FileUserName = saveFile;
this.FileNewName = (new java.util.Date().getTime()) +
saveFile;
//System.out.println("File path = " +
FileServerPath+this.FileNewName);
FileOutputStream fileOut = new
FileOutputStream(FileServerPath +
this.FileNewName);
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
return true;
}
else
{
this.ErrorMessage = "Invalid File Format. " +
"File Format should be .png, .gif,
.jpg or .jpeg.";
return false;
}
}
catch (Exception exception)
{
this.ErrorMessage = exception.getMessage();
return false;
}
}
else
{
this.ErrorMessage = "Ilegal ENCTYPE : must be
multipart/form-data\n" +
"ENCTYPE set = " + contentType;
return false;
}
}
Comment