一尘不染

如何在多部分后请求中传递参数

jsp

Servlet代码

request.getparameter("fname") //I can't able to get value.

HTML代码

 <html>
    <head>
    <title>File Uploading Form</title>
    </head>
    <body>
    <h3>File Upload:</h3>
    Select a file to upload: <br />
    <form action="UploadServlet" method="post"
                            enctype="multipart/form-data">
    <input type="text" name="fname" size="50" />   
 <input type="file" name="file" size="50" />
 <input type="submit" value="Upload File" />
    </form>
    </body>
    </html>

我的问题是: 如何fname在多部分帖子请求中传递参数?


阅读 246

收藏
2020-06-10

共1个答案

一尘不染

简短的回答: 你会发现fnamePart请求秒。

长答案: 对于多部分类型的请求,即使简单<input type="text">字段值也放在部分中。您将必须遍历Part返回的对象HttpServletRequest.getParts()并根据其name属性对其进行处理:

for( Part p : request.getParts() ) {
    if( "fname".equals(p.getName()) ) {
        ...
    }
    else if( "file".equals(p.getName()) ) {
        ...
    }
}

为了进一步使事情复杂化,该部分的内容以InputStream--
形式提供,Part.getInputStream()因此您将不得不做一点转换byte[]→→ String以获得值。

2020-06-10