我正在使用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());
}
}
答案 0 :(得分:0)
我想求职者必须登录您的网站。您很可能有一个会话对象可以帮助您识别您的用户。您可以在登录时将Jobseeker ID存储在会话中,并在上传时创建文件名时从那里读取。
当文件成功写入服务器时,您只需将文件名放在数据库中即可。