【发布时间】:2012-03-22 09:39:56
【问题描述】:
我正在使用 JSP 和 Oracle XE 开发一个 Job Portal 网站。现在,求职者应该上传他的 Resume/CV。说,这个文件名为 Resume.pdf。接下来,另一个求职者上传他的 Resume.pdf(同名)。我想避免保存同名的文件。有人建议我在存储在数据库中时将日期与文件名连接起来。但我想将求职者 ID(由 oracle 中的序列创建)与此文件名连接起来。 问题是:上传文件时,我不需要连接字符串。我只在将文件名写入数据库时才需要它。没有这个条件,我已经成功上传了文件。 我给出了序列和插入过程的代码。
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());
}
}
【问题讨论】: