获取一个csv文件作为http下载

时间:2014-01-06 11:48:13

标签: java servlets plsql

我必须在夜间进程中创建一个CSV文件,并将这些文件作为http下载用于客户端。

我已经使用帮助PLSQL块创建了一个CSV:

DECLARE
    F UTL_FILE.FILE_TYPE;
    CURSOR C1 IS SELECT emp_id, name FROM employee;
    C1_R C1%ROWTYPE;
BEGIN
    F := UTL_FILE.FOPEN('EXPORT_DIR','employee.csv','w',32767);
    FOR C1_R IN C1
    LOOP
        UTL_FILE.PUT(F,C1_R.emp_id);
        UTL_FILE.PUT(F,','||C1_R.name);
        UTL_FILE.NEW_LINE(F);
    END LOOP;
    UTL_FILE.FCLOSE(F);
END;
/

这将在数据库服务器上创建CSV文件“employee.csv”。现在我必须将此文件作为HTTP可下载文件提供给客户端。怎么做 ?

2 个答案:

答案 0 :(得分:1)

您可以提供一个Servlet来以csv格式下载文件。

DoanloadServlet.java:

public void doGet(HttpServletRequest request, HttpServletResponse response)  
        throws ServletException, IOException {      

try{
     //set content type to csv and response as attachment    
     response.setHeader("Content-Type", "text/csv");
     response.setHeader("Content-Disposition", "attachment; filename=Myfile.csv");
     OutputStream out = response.getOutputStream();  

     //read your file from database in outputstream
     FileInputStream in = new FileInputStream(my_file);
     byte[] buffer = new byte[4096];
     int length;
     while ((length = in.read(buffer)) > 0){
          out.write(buffer, 0, length);
     }
     in.close();
     out.flush();  
  }  
  catch(Exception e)
  {  
    //Exception handling  
  }

}

为用户提供一个链接并使用所需参数调用此servelet以从数据库中查找文件 你链接看起来像这样 http://serveraddress.com/DoanloadServlet?fileName=name_of_file

答案 1 :(得分:0)

我发现复制生成的文件Web服务器很容易。我们可以在网络服务器上使用SCP或FTP到生成的文件。 e.g。

scp /mnt/csv_dir/feed.csv root@server:/home/stackoverflow/www/csv

在夜间进程中添加此命令以运行 上面的命令会将feed.csv从csv_dir移动到Web服务器的csv文件夹。

现在我们将能够使用网址访问该文件。