我正在使用Android客户端在Google云存储中发布数据和一些文件:
MultipartEntityBuilder entityBuilder = MultipartEntityBuilder.create();
entityBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
entityBuilder.addBinaryBody("file", file);
entityBuilder.addTextBody("author", author);
在服务器端,我使用servlet来获取该请求。 然而,虽然我能够获取文件并存储它,但我不知道如何获取addTextBody中的内容("作者"在我的情况下为字符串)
我一直在寻找一段时间,发现有人发布了相同的问题,但没有人回答他。 (How to get the text from a addTextBody in a miltipartentitybuilder)
答案 0 :(得分:3)
假设您使用的是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
}
}
}
}