Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未提取表单参数值_Java_Jsp_Jakarta Ee_Servlets_File Upload - Fatal编程技术网

Java 未提取表单参数值

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

我正在使用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="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();
    ...
}
希望这有帮助

可能重复的