Wednesday, March 31, 2010

picture upload revised

///////////Servlet//////////////////////


package controler.project;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.ExceptionLogger;
import model.UploadProjectPictureReleted;

public class UploadProjectPicture extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String errormsg="";
int flag=0;
String fileName="",lastFileName="";
String err = "";
String sno ="1";

try
{
String proname= "";
String lastentryby = session.getAttribute("cur_userid").toString().trim();


String contentType = request.getContentType();
String boundary = "";
final int BOUNDARY_WORD_SIZE = "boundary=".length();
//out.println("ss");

if(contentType == null || !contentType.startsWith("multipart/form-data"))
{
err = "Ilegal ENCTYPE : must be multipart/form-data\n";
err += "ENCTYPE set = " + contentType;
session.setAttribute("resmsg", err);
response.sendRedirect("project/project_pic_upload.jsp?pno="+sno.trim());
}
else
{
//out.println("tttttttttttttttttt");
boundary = contentType.substring(contentType.indexOf("boundary=") + BOUNDARY_WORD_SIZE);
boundary = "--" + boundary;


javax.servlet.ServletInputStream sis = request.getInputStream();
//out.println("kkkkkkkkkkkkkkkk");
double len=request.getContentLength();
if(len>10485760)
{
errormsg="Picture larger than 10 MB Upload Not Supported";
session.setAttribute("resmsg", errormsg);
response.sendRedirect("project/project_pic_upload.jsp?pno="+sno.trim());
flag=0;
}
else
{
byte[] b = new byte[1048576];
int x=0;
int state=0;
String name=null, contentType2=null;
java.io.FileOutputStream buffer = null;
//out.println("mmmmmmmmmmmmmmmmmmmmmm");
while((x=sis.readLine(b,0,1048576))>-1)
{
String s = new String(b,0,x);
if(s.startsWith(boundary))
{
state = 0;
name = null;
contentType2 = null;
fileName = null;
}
else if(s.startsWith("Content-Disposition") && state==0)
{
//out.println("22222");
state = 1;
if(s.indexOf("filename=") == -1)
{
name = s.substring(s.indexOf("name=") + "name=".length(),s.length()-2);
}
else
{
name = s.substring(s.indexOf("name=") + "name=".length(),s.lastIndexOf(";"));
fileName = s.substring(s.indexOf("filename=") + "filename=".length(),s.length()-2);
if(fileName.equals("\"\""))
{
fileName = null;
}
else
{
String userAgent = request.getHeader("User-Agent");
String userSeparator="/"; // default
if (userAgent.indexOf("Windows")!=-1)
userSeparator="\\";
if (userAgent.indexOf("Linux")!=-1)
userSeparator="/";
fileName = fileName.substring(fileName.lastIndexOf(userSeparator)+1,fileName.length()-1);
if(fileName.startsWith( "\""))
fileName = fileName.substring( 1);
}
}
name = name.substring(1,name.length()-1);
if (name.equals("file")) {

if (buffer!=null)
buffer.close();
lastFileName = fileName;

// out.println(fileName);
// un=fileName;
buffer = new java.io.FileOutputStream(fileName);
}
}
else if(s.startsWith("Content-Type") && state==1)
{
state = 2;
contentType2 = s.substring(s.indexOf(":")+2,s.length()-2);
}
else if(s.equals("\r\n") && state != 3)
{
state = 3;
}
else
{
if (name.equals("file"))
{
buffer.write(b,0,x);
}
if(name.equals("projnm"))
{
proname=s;
}
if(name.equals("cpno"))
{
sno=s;
}
}
}
sis.close();
buffer.flush();
buffer.close();

UploadProjectPictureReleted uppr = new UploadProjectPictureReleted();
uppr.setProname(proname.trim());
uppr.setFile(lastFileName);
uppr.setLastentryby(lastentryby.trim());
uppr.setData();
errormsg="Picture Upload Successfully";
session.setAttribute("resmsg", errormsg);
response.sendRedirect("project/project_pic_upload.jsp?pno="+sno.trim());
}
}
}
catch(Exception e)
{
ExceptionLogger.writeToDB(this.getClass().getName()+": "+e);
session.setAttribute("resmsg", "Sorry! Some Exception Occured");
response.sendRedirect("project/project_pic_upload.jsp?pno="+sno.trim());
} finally {
out.close();
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>

}

////////////end of Servlet////////////////////////////////



///model bean class////////////////////

package model;

import dbmodel.DBConnection;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class UploadProjectPictureReleted {

private String proname;
private String file;
private String lastentryby;

public boolean setData() throws Exception
{
boolean flag=false;
File file1 =null;
file1 = new File(file);
FileInputStream fis = new FileInputStream(file1);
int len1 = (int)file1.length();

Connection con=new DBConnection().getDBConnection();
PreparedStatement pst = con.prepareStatement("select pro_name from tbl_project_picture where pro_name=?");
pst.setString(1,proname.trim());
ResultSet rs=pst.executeQuery();
if(rs.next())
{
PreparedStatement pst1 = con.prepareStatement("delete from tbl_project_picture where pro_name=?");
pst1.setString(1,proname.trim());

pst1.executeUpdate();

pst1.close();
}


PreparedStatement pstmt = con.prepareStatement("insert into tbl_project_picture VALUES(?,?,?,Now())");
pstmt.setString(1,proname.trim());
pstmt.setBinaryStream(2, fis, len1);
pstmt.setString(3,lastentryby.trim());
if(pstmt.executeUpdate()>0)
{
flag=true;
}
fis.close();
pstmt.close();

rs.close();
pst.close();
con.close();

try{
file1.delete();
}catch(Exception e){

}

return flag;
}

/**
* @return the proname
*/
public String getProname() {
return proname;
}

/**
* @param proname the proname to set
*/
public void setProname(String proname) {
this.proname = proname;
}

/**
* @return the file
*/
public String getFile() {
return file;
}

/**
* @param file the file to set
*/
public void setFile(String file) {
this.file = file;
}

/**
* @return the lastentryby
*/
public String getLastentryby() {
return lastentryby;
}

/**
* @param lastentryby the lastentryby to set
*/
public void setLastentryby(String lastentryby) {
this.lastentryby = lastentryby;
}

}

No comments:

Post a Comment