我有一个JSP应用程序。它上传文件,但为此,用户必须使用名称和密码进行身份验证。所以我的JSP文件以:
开头//0.2.- We get the password
String password = (String) request.getParameter("pass"); // -> This returns NULL
//0.3.- We get the "uvus"
String uvus = (String) request.getParameter("uvus"); //-> This also returns NULL
//More code
所以我试图了解为什么我从这些变量中得到null 。
我转到我上传的表单,并查找正在发送的数据。使用Firefox调试工具,我看到:
事实上,它正在发送。
作为附加信息,我正在建立这样的请求:
var pUvus = document.getElementById("uvus").value;
var pPassword = document.getElementById("pass").value;
var file = document.getElementById("userFile");
var formData = new FormData();
formData.append("upload", file.files[0]);
formData.append("uvus", pUvus);
formData.append("pass", pPassword);
xmlhttp.open("POST","uploadFile.jsp",true);
xmlhttp.send(formData);
最后,我想说我可以在相同的JSP中从应用程序对象获取vars而没有错误,并且在请求对象中接收到另一对JSP文件变量而没有更多问题,所以我认为我的错在我正在构建Ajax请求的方式,但我已经没有更多的线索......
任何人都可以指导我吗?
感谢您的帮助
更新:@rickz询问我如何获取文件并解析请求(在我的问题之后做了什么,尝试从请求范围中获取对象):
List items;
items = servlet_up.parseRequest(request);
for(int i=0;i<items.size();i++)
{
FileItem item = (FileItem) items.get(i);
if (! item.isFormField())
{
答案 0 :(得分:1)
request.getParameter()不支持多部分/表单数据请求。 如果您使用的是org.apache.commons.fileupload,那么您应该使用类似
的内容if(item.isFormField()){
name = item.getFieldName();
...
}