Java 获取csv文件作为http下载

Java 获取csv文件作为http下载,java,servlets,plsql,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

我必须在夜间进程中创建一个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可下载文件提供给客户端。怎么做

您可以提供一个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  
  }

}
为用户提供一个链接,并使用所需参数调用此Servlet以从数据库中查找文件。
您的链接看起来是这样的

http://serveraddress.com/DoanloadServlet?fileName=name_of_file

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

scp /mnt/csv_dir/feed.csv root@server:/home/stackoverflow/www/csv
在夜间进程中添加此命令以运行 上述命令将
feed.csv
从csv_dir移动到web服务器的csv文件夹


现在,我们可以使用web url访问文件。

您的文件存储在哪里?它在表中吗?不,它在服务器端,以特定的名称存储在磁盘上。确定。。然后将该文件路径传递给下面的示例。这将提示用户保存或打开文件。