从发布请求中检索二进制文件



发送发布请求(apache httpclient,shere kotlin源代码):

val httpPost = HttpPost("http://localhost:8000")
val builder = MultipartEntityBuilder.create()
builder.addBinaryBody("file", File("testFile.zip"),
        ContentType.APPLICATION_OCTET_STREAM, "file.ext")
val multipart = builder.build()
httpPost.entity = multipart
val r = httpClient.execute(httpPost)
r.close()

我在我的邮政处理程序中以Via Spark-Java Request-Object接收请求。如何从邮政请求中检索原始文件(加上文件名作为奖金)?request.bodyasbytes()方法似乎添加了一些字节,因为身体大于原始文件。

谢谢,Jörg

在火花文档页面的底部附近,有一个"示例和常见问题"部分。第一个示例是"我如何上传?"。从那里,它将进一步链接到GitHub上的示例。

简而言之:

post("/yourUploadPath", (request, response) -> {
    request.attribute("org.eclipse.jetty.multipartConfig", new MultipartConfigElement("/temp"));
    try (InputStream is = request.raw().getPart("file").getInputStream()) {
        // Use the input stream to create a file
    }
    return "File uploaded";
});

访问原始文件名:

request.raw().getPart("file").getSubmittedFileName()

要处理多个文件或零件,我通常的代码类似于以下(假设只有文件包含在多部分编码的上传中):

for (Part part : req.raw().getParts()) {
  try (InputStream stream = part.getInputStream()) {
    String filename = part.getSubmittedFileName();
    // save the input stream to the filesystem, and the filename to a database
  }
}

相关内容

  • 没有找到相关文章

最新更新