2013-02-14 99 views
0

我想检测一个Http-Request是否是文件上传。我知道,有一种观点可能表明文件上传的东西:如何检测文件上传检查http消息?

  • 请求方法:如果它的POST,通常有一个消息体。但我知道,也可以通过GET请求发送内容。是否可以使用GET请求上传文件?
  • content-type:我猜想,content-type字段通常是设置file-upload-message。但是什么是文件上传的内容类型?
  • content-length:应该为文件上传设置content-length字段。

有左视图问题:

我怎么能区分一个普通的HTML格式的后一个文件上传?浏览器是否使用分块编码进行文件上传? (据我所知,这将是毫无意义的,但我不知道很多)

回答

1

通常可以通过检查请求是否多部分检测到。

以下示例代码为c从Apache的通用FileUpload库& P(http://javasourcecode.org/html/open-source/commons-fileupload/commons-fileupload-1.2.2/org/apache/commons/fileupload/servlet/ServletFileUpload.java.html

/** 
* Utility method that determines whether the request contains multipart 
* content. 
* 
* @param request The servlet request to be evaluated. Must be non-null. 
* 
* @return <code>true</code> if the request is multipart; 
*   <code>false</code> otherwise. 
*/ 
public static final boolean isMultipartContent(
     HttpServletRequest request) { 
    if (!"post".equals(request.getMethod().toLowerCase())) { 
     return false; 
    } 
    String contentType = request.getContentType(); 
    if (contentType == null) { 
     return false; 
    } 
    if (contentType.toLowerCase().startsWith(MULTIPART)) { 
     return true; 
    } 
    return false; 
} 

其中MULTIPART是

/** 
* Part of HTTP content type header. 
*/ 
public static final String MULTIPART = "multipart/";