i have acode that upload file from client to web server but i need to insert the file name into DB (mysql) to get it in download list............HOW?

this is jsp code

<%@ page contentType="text/html;charset=windows-1252"%>
<%


    response.setContentType("text/html");
    response.setHeader("Cache-control","no-cache");

    String err = "";

    String lastFileName = "";

    String contentType = request.getContentType();
    String boundary = "";
    final int BOUNDARY_WORD_SIZE = "boundary=".length();
    if(contentType == null || !contentType.startsWith("multipart/form-data")) {
      err = "Ilegal ENCTYPE : must be multipart/form-data\n";
      err += "ENCTYPE set = " + contentType;
    }else{
      boundary = contentType.substring(contentType.indexOf("boundary=") + BOUNDARY_WORD_SIZE);
      boundary = "--" + boundary;
      try {
        javax.servlet.ServletInputStream sis = request.getInputStream();
        byte[] b = new byte[1024];
        int x=0;
        int state=0;
        String name=null,fileName=null,contentType2=null;
        java.io.FileOutputStream buffer = null;
        while((x=sis.readLine(b,0,1024))>-1) {
          String s = new String(b,0,x);
          if(s.startsWith(boundary)) {
            state = 0;
            //out.println("name="+name+"<br>");
            //out.println(fileName+"<br>");

            name = null;
            contentType2 = null;
            fileName = null;


          }else if(s.startsWith("Content-Disposition") && state==0) {
            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;
              buffer = new java.io.FileOutputStream("c:\\"+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);
          }
        }
        sis.close();
        buffer.close();
      }catch(java.io.IOException e) {
        err = e.toString();
      }
    }
    boolean ok = err.equals("");
    if(!ok) {
      out.println(err);
    }else{
    String fn=lastFileName;

    %>
<SCRIPT language="javascript">
  history.back(1)
  alert('Uploaded <%=lastFileName%>');
  window.location.reload(false)
</SCRIPT>
    <%
    }
    out.println("done");
%>

*************************************************
and tis is html code

<html>
  <head>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252"></meta>
    <title>untitled1</title>
  </head>
  <body>
  <form name="uploadForm" action="upload.jsp" enctype="multipart/form-data" method="post">
  <input type="file" name="file"/>
  <input TYPE=Button name='Upload' Value='Upload' onClick="uploadForm.Upload.value='Uploading...';document.uploadForm.action='upload.jsp';document.uploadForm.submit()">
</form>
  </body>
</html>

thanks

Recommended Answers

All 6 Replies

You don't have to check for type of operation system to use proper slash. Class File provide separator which automaticaly detect OS and apply relevant slash.
For example if your file return absolute path as C:\Test to create new File you do

File fileTwo = new File(file.getAbsolutePath() + File.separator + fileName);

which will return then absolute path as C:\Test\fileName.In case of unix file return absolute path home/Test return would be home/Test/fileName
Sun tutorial aviable here

I'm not clear how you retrive the files from user pc, but once you get file source destination which you can have as File or String(in case of String you have to create new File out of it) you call method getName()
whitch return String with the name of your file

anyone writing such crap in a JSP gets what he deserves when (and it will) it doesn't work.

Thanks Mohandsa your code was very usefull to me.

??? usefull, that mess !!!

Maybe as an example of what not to do?
Or for the IT version of the freaky horror show?

Yes, but the Rocky Horror Picture Show is, at least, funny. That's just scary, and, maybe, a little sad. ;-)

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.