Java 如何知道httpservletrequest是否包含一些文件/图像?

Java 如何知道httpservletrequest是否包含一些文件/图像?,java,http,servlets,multipartentity,Java,Http,Servlets,Multipartentity,在以下代码中: public static MultipartEntity buildMultiEntity(final SlingHttpServletRequest request) { MultipartEntity multipartEntity = null; final Map<String, RequestParameter[]> params = request.getRequestParameterMap();

在以下代码中:

public static MultipartEntity buildMultiEntity(final SlingHttpServletRequest request) {
        MultipartEntity multipartEntity = null;
                final Map<String, RequestParameter[]> params = request.getRequestParameterMap();
        if(params.containsKey("myfile")) {
            multipartEntity = new MultipartEntity();

            for (final Map.Entry<String, RequestParameter[]> pairs : params.entrySet()) {
                final String key = pairs.getKey();
                final RequestParameter[] parameterArray = pairs.getValue();
                final RequestParameter param = parameterArray[0];
                InputStream inputStream = null;
                try {
                    inputStream = param.getInputStream();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                multipartEntity.addPart(key, new InputStreamBody(inputStream, param.getFileName()));
            }
        }
        return multipartEntity;
    }

如何识别,如果请求有图像,即使我不知道,图像文件的输入名称是什么?

我认为您可以尝试使用附件来实现此目的。 为此,您需要在UI上的表单中添加
enctype=“multipart/form data”
。 它将是smth一样的

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    // some other inputs
</form>

这不是确切的答案,但你不应该这样做。请求中的参数都应该为您所知。嗯,但是如果事情发生了变化呢?如果您不能改变它,那么您必须以“糟糕的方式”来做,我理解。但是,如果您正在进行分析,并且您得到了这个,那么您就做错了。如果您需要多张图片,标准是使用带有名称的数组:
myfile[0]
myfile[1]
。。。然后,如果您使用一些库或框架(如Spring),您可以使用如下对象:
MultipartFile[]myfile
,它会自动解析参数并将其添加到该数组中。警告请求。getPart(“文件”)正在阻止将创建一个临时文件
<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    // some other inputs
</form>
@WebServlet("/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    // ...
}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    Part filePart = request.getPart("file"); 
    String fileName = filePart.getSubmittedFileName();
    InputStream fileContent = filePart.getInputStream();
    // some job here
}

private static String getFileName(Part part) {
    for (String cd : part.getHeader("content-disposition").split(";")) {
        if (cd.trim().startsWith("filename")) {
            String fileName = cd.substring(cd.indexOf('=') + 1).trim().replace("\"", "");
            return fileName.substring(fileName.lastIndexOf('/') + 1).substring(fileName.lastIndexOf('\\') + 1); // MSIE fix.
        }
    }
    return null;
}