从帖子请求

时间:2017-10-04 13:32:31

标签: apache-httpclient-4.x spark-java httpentity

发送POST请求(Apache httpclient,这里是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()

我在post post处理程序中收到了一个来自spark spark-java Request-object的请求。如何从帖子请求中检索原始文件(加上文件名作为奖励)? request.bodyAsBytes()方法似乎添加了一些字节,因为正文比原始文件大。

谢谢,Jörg

1 个答案:

答案 0 :(得分:0)

在Spark的文档页面底部附近有一个"Examples and FAQ"部分。第一个例子是“我如何上传内容?”。 从那里,它进一步链接到example on GitHub

简而言之:

app.use(cookieParser());
app.use('/', routes);
app.use(express.static('public'));

要访问原始文件名:

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()