gpt4 book ai didi

java - 如何创建流式传输到 http 响应的文件

转载 作者:行者123 更新时间:2023-12-01 19:14:15 28 4
gpt4 key购买 nike

我正在编写一个 Web 应用程序,希望用户能够单击链接并下载文件。

我的接口(interface)位于第三方库中,我无法更改:

writeFancyData(File file, Data data);

有没有一种简单的方法可以创建一个文件对象,我可以将其传递给此方法,该方法在写入时将流式传输到 HTTP 响应?

注释:

显然我可以只写一个临时文件,然后将其读回,然后将其写入http响应的输出流。但是我正在寻找一种避免文件系统 IO 的方法。理想情况下,通过创建一个假文件,当写入该文件时,该文件将写入 http 响应的输出流。

例如

writeFancyData(new OutputStreamBackedFile(response.getOutputStream()), data);

我需要使用 writeFancyData 方法,因为它以我无法重现的非常特定的格式写入文件。

最佳答案

假设 writeFancyData 是一个黑匣子,这是不可能的。作为一个思想实验,考虑 writeFancyData 的实现,它执行如下操作:

public void writeFancyData(File file, Data data){
File localFile = new File(file.getPath());
...
// process data from file
...
}

鉴于您可以从 File 的任何扩展版本返回的唯一内容是路径名,您将无法将所需的数据获取到该方法中。如果签名包含某种流,那么您的位置会好得多,但由于您只能传入一个文件,因此无法完成此操作。

实际上,实现可能是 FileInputStream 或 FileReader 类之一,它们实际上仅使用 File 对象作为名称,然后调用 native 方法来获取文件描述符并处理实际的 I/O。

关于java - 如何创建流式传输到 http 响应的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418785/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com