2012-03-22 18 views
0

我正在開發一個使用JSP和Oracle XE的Job Portal網站。現在,求職者應該上傳他的Resume/CV.Say,這個文件名是Resume.pdf.Next,另一個求職者上傳他的Resume.pdf(同名)。我想避免保存具有相同名稱的文件。一個建議我在數據庫中存儲時使用文件名來協調日期。但我想連接Jobseeker ID(由Oracle在Sequence中創建)與這個文件名。 問題是:當上傳文件時,我不需要連接字符串。我只在將文件名寫入數據庫時​​需要它。如果沒有這種情況,我已成功上傳文件。 我給出了序列和插入過程的代碼。修改文件名的JSP文件上傳

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

我想,求職者必須登錄到你的網站。您很可能會有一個會話對象,可以幫助您識別用戶。當您登錄時,您可以將Jobseeker ID存儲在會話中,並在上傳時創建文件名時從那裏讀取。

當文件成功寫入服務器時,您只需將文件名放入數據庫即可。

+0

thanx的回覆。但我實際上想在註冊過程中上傳文件。我發現了一個解決方案,雖然我通過將emp_file內容傳遞給可調用語句插入到Job搜索器的數據庫中。當然,我不得不修改插入程序。 – Deathbmine 2012-03-22 17:40:58