gpt4 book ai didi

java - JAX-RS 是否支持输入流?

转载 作者:行者123 更新时间:2023-11-30 10:56:56 26 4
gpt4 key购买 nike

给定以下 HTML:

<form action="upload" method="post" enctype="multipart/form-data">
Select a file : <input type="file" name="file" size="45" />
<input type="submit" value="Upload" />
</form>

如果我有一个以以下开头的 JAX-RS 方法:

@POST
@Path("upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(
@FormParam("file") InputStream uploadedInputStream) {
...
}

uploadedInputStream 是否将作为 Java EE API 规范 的一部分进行流式处理,而不是特定于实现?那就是我可以上传 1TB 的文件而不会炸毁堆?

我似乎找不到任何表明它是标准的东西,甚至对 @Consumes(MediaType.MULTIPART_FORM_DATA) 的支持也是特定于实现的。

要让它跨应用服务器工作,我唯一能想到的就是使用如下所示的 servlet,它会显示上传的字节数。

@WebServlet("/upload")
@MultipartConfig
public class ImportServlet extends HttpServlet {

@Override
protected void doPost(final HttpServletRequest req,
final HttpServletResponse resp) throws ServletException,
IOException {

int c = 0;
InputStream cis = req.getPart("file").getInputStream();
int ch = cis.read();
while (ch != -1) {
++c;
ch = cis.read();
}
cis.close();
resp.getWriter().print(c);
}
}

最佳答案

据我所知,多部分数据流被加载到磁盘,然后为您打包。你能更愿意用户直接 PUT 请求吗?它将使您可以直接从客户端访问输入流。我用千兆字节的数据试过这个没有问题。

如果有人知道,请指正。

关于java - JAX-RS 是否支持输入流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860561/

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