当使用 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'部分来处理文件内容。

Java HttpServletRequest 获取 InputStream 文件内容出现 WebKitFormBoundary 错误解决方法

原文地址: https://www.cveoy.top/t/topic/qkJm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录