aur*_*rel 7 java file-upload apache-commons
我在一个java服务器端应用程序中使用Apache Commons FileUpload,该应用程序具有带字段的html表单:
将填充目标邮箱的电子邮件地址的目标
带有发件人消息的消息文本
<input type=file ...用于上传照片的字段.我可以接收上传的文件(作为流),但我如何访问1)和2)表单值(由应用程序的用户完成)?非常感谢,Aurel小智 6
我猜你正在使用FileItemIterator来迭代请求中的项目.迭代器next()方法返回FileItemStream(不是FileItem).打开该对象上的流并将其转换为如下字符串:
import org.apache.commons.fileupload.util.Streams;
...
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
String name = item.getFieldName();
String value = Streams.asString(stream);
Run Code Online (Sandbox Code Playgroud)
其他答案建议的getString方法是FileItem接口上的方法.
您可以使用相同的API接收它们.只是在FileItem#isFormField()返回时挂钩true.如果它返回,false那么它就是你可能已经使用的上传文件.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
for (FileItem item : items) {
if (item.isFormField()) {
// Process regular form field (input type="text|radio|checkbox|etc", select, etc).
String fieldname = item.getFieldName();
String fieldvalue = item.getString();
// ... (do your job here)
} else {
// Process form file field (input type="file").
String fieldname = item.getFieldName();
String filename = FilenameUtils.getName(item.getName());
InputStream filecontent = item.getInputStream();
// ... (do your job here)
}
}
} catch (FileUploadException e) {
throw new ServletException("Cannot parse multipart request.", e);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)