表单参数值未获取

时间:2014-04-07 08:49:12

标签: java jsp java-ee servlets file-upload

我正在使用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。可能是什么原因?如何解决?

1 个答案:

答案 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();
    ...
}

希望这有帮助!