JSP文件上传,文件名已修改

时间:2012-03-22 09:39:57

标签: file upload

我正在使用JSP和Oracle XE开发一个Job Portal网站。现在,求职者应该上传他的Resume / CV.Say,这个文件名是Resume.pdf.Next,另一个求职者上传他的Resume.pdf(同名。)我想避免保存同名文件。我建议我在数据库中存储时用文件名连接日期。但是我想用这个文件名连接Jobseeker ID(由oracle中的Sequence创建)。 问题是:当文件上传时,我不需要连接字符串。我只在将文件名写入数据库时​​才需要它。没有这个条件,我已成功上传文件。 我给出了序列和插入程序的代码。

create sequence js_id_seq
increment by 1 
start with 100
nocache
nocycle;
/

create or replace procedure js_file_prefx(prefx out varchar2)
is
begin
select 'JS'||js_id_seq.**nextval** into prefx from dual;
end;
/
create or replace procedure ins_job_seekr (
name varchar2,
paswd varchar2,
profile varchar2,
email varchar2,
address varchar2,
phone number,
resume varchar2
)
is
begin
insert into employer values(
'JS'||js_id_seq.**currval**,
name,
paswd,
profile,
email,
address,
phone,
resume
 );
end;
/

JSP代码部分:

 String emp_file="";

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
String  Filename1 ="";
File file;
String filePath="";

if (!isMultipart) 
{

} 
else {


DiskFileItemFactory factory = new DiskFileItemFactory();

------  //not giving code this part as this was working fine
 else {

        try {   //if i put connection string here, it says that its a different    
              //instance of hr

             CallableStatement cs=con.prepareCall("{call emp_file_prefx(?)}");

       cs.registerOutParameter(1,Types.VARCHAR);
       cs.execute();
       emp_file= cs.getString(1); 

            Filename1 = item.getName();
            filePath=config.getServletContext().getRealPath("/")+"upload_data\\";

            Filename=Filename1.substring( Filename1.lastIndexOf("\\")+1);

           Filename=Filename + emp_file;

            if(Filename!="")
                {  file = new File( filePath +Filename) ;
                   item.write(file);
                }

              }
        catch(Exception err)
            {
                out.println(err.getMessage());
            }

        }
   }

  try
    {
     DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());

     Connection con=DriverManager.getConnection
     ("jdbc:oracle:thin:@127.0.0.1:1521:XE","hr","hr");
    CallableStatement cs1=con.prepareCall("{call ins_job_seekr(?,?,?,?,?,?)}");

    cs1.setString(1,c_name);
cs1.setString(2,paswrd);
cs1.setString(3,c_prof);
cs1.setString(4,mail);
cs1.setString(7,addres);
    cs1.setInt(8,Integer.parseInt(phone_no));
cs1.setString(9,Filename);


cs1.execute();
    out.println("Insert successful");



    //con.close();
   }
  catch(Exception err)
  {
   out.println(err.getMessage());
  }

  }

1 个答案:

答案 0 :(得分:0)

我想求职者必须登录您的网站。您很可能有一个会话对象可以帮助您识别您的用户。您可以在登录时将Jobseeker ID存储在会话中,并在上传时创建文件名时从那里读取。

当文件成功写入服务器时,您只需将文件名放在数据库中即可。