Java 未提取表单参数值
我正在使用jsp和servlet制作一个web应用程序。在一个表单中,我尝试上载一个文件并在文本框中输入一些值。这是我的表单:Java 未提取表单参数值,java,jsp,jakarta-ee,servlets,file-upload,Java,Jsp,Jakarta Ee,Servlets,File Upload,我正在使用jsp和servlet制作一个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="to
<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>
在我的共享文件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));
String N=request.getParameter(“totalshares”);
ServletFileUpload upload=新的ServletFileUpload(新的DiskFileItemFactory());
ArrayListFileNames=新的ArrayList();
列表文件=新建ServletFileUpload(新建DiskFileItemFactory()).parseRequest(请求);
out.println(files.size());
Iterator it=files.Iterator();
while(it.hasNext()){
FileItem fi=(FileItem)it.next();
if(fi.isFormField()){
继续;
}
添加(fi.getName());
//System.out.println(“文件名:+fi.getName());
InputStream=fi.getInputStream();
FileOutputStream fos=新的FileOutputStream(“C:\\Users\\admin\\Desktop\\SharedCrpto1\\web\\SharedDocuments\\”+fi.getName());
int x=is.read();
而(x>=0){
fos.写入((字节)x);
x=is.read();
系统输出打印项次(“读取”);
}
}
out.println(N);
out.println(filenames.get(0));
但是它将N的值设为NULL。原因是什么?如何解决它?如果将表单类型用作
enctype=“multipart/form data”
,则不能简单地计算其他参数的值。你需要像这样迭代
对于常规表单字段,您很可能只对项的名称及其字符串值感兴趣。正如您所料,访问这些文件非常简单。
// 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();
...
}
对于与文件相关的
对于文件上传,在处理内容之前,您可能需要了解一些不同的事情。以下是您可能感兴趣的一些方法的示例。
// 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();
...
}
希望这有帮助 可能重复的