如何在Spring4中传输大型csv rest api?

时间:2015-04-10 02:54:47

标签: java spring

我正在使用spring 4 web-mvc创建一个rest api。我有一个巨大的csv文件,我想要流。在python中,我可以做到非常简单:

from flask import Response

@app.route('/large.csv')
def generate_large_csv():
    def generate():
        for row in iter_all_rows():
            yield ','.join(row) + '\n'
    return Response(generate(), mimetype='text/csv')

Spring 4中的等价物是什么?这可能吗?

1 个答案:

答案 0 :(得分:1)

以下是伪代码作为您的提示:

@RequestMapping(value = "/large.csv", method = GET, produces = "text/csv")
@ResponseStatus(value = HttpStatus.OK)
public void streamLargeCSV(OutputStream output) {
    InputStream is = new FileInputStream(csvFile);
    int read=0;
    byte[] bytes = new byte[1024 * 4];  //size per read

    while((read = is.read(bytes))!= -1){
        output.write(bytes, 0, read);
        output.flush();  //may change flush rate to more rows/flush
    }
    output.close()
}