我正在使用jsp和servlets创建一个Web应用程序。在一个表单中,我尝试上传文件并在文本框中输入一些值。这是我的表单:
<FORM METHOD=POST ACTION="sharingfile" NAME="form1" id="form1" enctype="multipart/form-data">
<INPUT TYPE="file" NAME="file" value="file">
<INPUT TYPE="text" NAME="totalshares" size="20">
<INPUT TYPE="submit" value="NEXT"> </FORM>
在我的sharingfile servlet中,我编写了以下代码:
String N = request.getParameter("totalshares");
ServletFileUpload upload = new ServletFileUpload(new DiskFileItemFactory());
ArrayList<String>filenamess=new ArrayList<String>();
List<FileItem> files = new ServletFileUpload(new DiskFileItemFactory()).parseRequest(request);
out.println(files.size());
Iterator it= files.iterator();
while(it.hasNext()){
FileItem fi=(FileItem)it.next();
if (fi.isFormField()) {
continue;
}
filenamess.add(fi.getName());
//System.out.println("filename: " + fi.getName());
InputStream is= fi.getInputStream();
FileOutputStream fos=new FileOutputStream("C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\SharedDocuments\\"+fi.getName());
int x=is.read();
while(x>=0){
fos.write((byte)x);
x=is.read();
System.out.println("reading");
}
}
out.println(N);
out.println(filenamess.get(0));
但它将N的值赋予NULL。可能是什么原因?如何解决?
答案 0 :(得分:0)
如果您将表单类型用作enctype="multipart/form-data"
,则无法简化其他参数的值。你需要像这样迭代
对于常规表单字段,您很可能只对项目名称及其String值感兴趣。正如您所料,访问这些非常简单。
// Process a regular form field
if (files.isFormField()) {
String N=request.getParameter("totalshares");
}
与文件相关,
对于文件上传,在处理内容之前,您可能需要了解几种不同的内容。以下是您可能感兴趣的一些方法的示例。
// Process a file upload
if (!files.isFormField()) {
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
...
}
希望这有帮助!