【问题标题】:JSP file upload with modified filename修改文件名的 JSP 文件上传
【发布时间】: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());
  }

  }

【问题讨论】:

    标签: file upload


    【解决方案1】:

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

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

    【讨论】:

    • 感谢回复。但我实际上想在注册期间上传文件。我自己找到了一个解决方案,尽管将 emp_file 内容传递给可调用语句以插入求职者的数据库。当然,我不得不修改要插入的程序。
    猜你喜欢
    • 2014-07-28
    • 1970-01-01
    • 2015-01-28
    • 2013-07-10
    • 2015-04-15
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多