如何从 MultipartEntityBuilder 中的 addTextBody 获取文本?

How to get the text from addTextBody in a MultipartEntityBuilder?

我正在使用 Android 客户端访问 post 数据和 Google 云存储中的一些文件:

MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
             entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); 
             entityBuilder.addBinaryBody("file", file);             
             entityBuilder.addTextBody("author", author);

在服务器端,我使用 servlet 来获取该请求。 但是,虽然我能够获取文件并存储它,但我不知道如何获取 addTextBody 中的内容(在我的例子中是 "author" 字符串)

我搜索了一段时间,刚刚发现有人 post 提出了完全相同的问题,但没有人回答他。 (How to get the text from a addTextBody in a miltipartentitybuilder)

假设您使用的是 Servlet 3.0+,只需使用 HttpServletRequest#getParts()。例如,如果您想要名为 author 的多部分内容,您可以使用 @MultipartConfig 配置 servlet,检索适当的 Part 对象并使用其 InputStream

@MultipartConfig()
@WebServlet(urlPatterns = { "/upload" })
public class UploadServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Collection<Part> parts = req.getParts();
        for (Part part : parts) {
            if (!part.getName().equals("author"))
                continue;
            try (InputStream in = part.getInputStream()){
                String content = CharStreams.toString(new InputStreamReader(in));
                System.out.println(content); // prints the value of author
            }
        }
    }
}