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

标签 java http servlets multipartentity

在下面的代码中:

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;
    }

我判断请求是否有如下图片

if(params.containsKey("myfile"))

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

最佳答案

我认为您可以为此目的尝试使用附件。 为此,您需要在 UI 的表单中添加 enctype="multipart/form-data"。 会是这样的

<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;
}

关于java - 如何知道 httpservletrequest 是否包含一些文件/图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31534159/

相关文章:

Java - 数组输出 null

java - 求图像 Java 的平均值

http - 如何在 Angular 2 中进行 API 调用?

http - JMeter 给出的响应消息为 "Non HTTP response code: java.net.SocketException/Non HTTP response message: Connection reset"

java - 我应该放弃 java.util.HashSet 以支持 CompactHashSet 吗?

java - jackson 用+和t字符反序列化日期字符串

json - 在 golang 中为 Places API 使用 HTTP 客户端,解码 JSON 和无效字符

java - 使用 jsp/servlet 清理 URL?

java - 我应该如何创建这个新页面? JSP 还是 servlet?

java - HttpSession 通过引用或值存储属性?