Java HttpServletRequest 获取 InputStream 文件内容出现 WebKitFormBoundary 错误解决方法
当使用 HttpServletRequest 获取 InputStream 文件内容时,如果文件是通过 multipart/form-data 表单上传的,那么在 InputStream 中会包含一些额外的信息,如'WebKitFormBoundary'等。
可以使用 Apache Commons FileUpload 库来解析 multipart/form-data 表单数据,该库提供了更方便的方法来处理这种情况。以下是一个示例代码:
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.util.Streams;
// Check if the request is multipart/form-data
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if (isMultipart) {
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload();
try {
// Parse the request
FileItemIterator iter = upload.getItemIterator(request);
while (iter.hasNext()) {
FileItemStream item = iter.next();
String fieldName = item.getFieldName();
if (!item.isFormField()) {
// Process file content
InputStream fileStream = item.openStream();
// TODO: Process the file content
// For example, you can read the content using Streams.copy() method:
ByteArrayOutputStream output = new ByteArrayOutputStream();
Streams.copy(fileStream, output, true);
byte[] fileContent = output.toByteArray();
// TODO: Process the fileContent array
}
}
} catch (Exception e) {
// Handle exception
}
}
这样,你就可以在 InputStream 中获取到文件的内容,而不会包含额外的信息。请根据你的具体需求修改示例代码中的'TODO'部分来处理文件内容。
原文地址: https://www.cveoy.top/t/topic/qkJm 著作权归作者所有。请勿转载和采集!