Java 获取csv文件作为http下载
我必须在夜间进程中创建一个CSV文件,并将这些文件作为http下载提供给客户端 我已使用帮助PLSQL块创建了CSV,如下所示: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
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访问文件。您的文件存储在哪里?它在表中吗?不,它在服务器端,以特定的名称存储在磁盘上。确定。。然后将该文件路径传递给下面的示例。这将提示用户保存或打开文件。