Java 在jsp或多部分/表单数据中上载文件

Java 在jsp或多部分/表单数据中上载文件,java,jsp,servlets,file-upload,Java,Jsp,Servlets,File Upload,实际上,在使用jsp中的common upload lib进行上传之前,我正在尝试获取要上传的文件数,并且我制作了一个获取文件数的函数,如下所示: public static int getUploadFileCount(HttpServletRequest request) throws FileUploadException { int Result = 0; DiskFileItemFactory factory = new DiskFileItemFactory();

实际上,在使用jsp中的common upload lib进行上传之前,我正在尝试获取要上传的文件数,并且我制作了一个获取文件数的函数,如下所示:

public static int getUploadFileCount(HttpServletRequest request) throws FileUploadException
{
    int Result = 0;

    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items) 
    {
        if (!item.isFormField())
        Result++;
    }       

    return Result;
}
在调用uploadPhoto函数后的代码中,还使用相同的代码逐个检索文件,如下所示:

    DiskFileItemFactory factory = new DiskFileItemFactory();
    ServletFileUpload upload = new ServletFileUpload(factory);
    List<FileItem> items = upload.parseRequest(request);
    for (FileItem item : items) // Did not get file if i already used this code once For getting the files count:
    {
        if (!item.isFormField())
        //did for makeing file and writing/saving it with a name
    }     
//if(UploadFileUtil.getUploadFileCount(request) != 1)
//    throw new FileUploadException("There is Multiple/None File upload for Profile Photo. ");
然后它就开始工作了。为什么有一次它被使用后,它无法检索文件。这背后的原因是什么
是否有任何方法可以使用公共上载对文件进行计数…以及对其名称进行计数?

这似乎是UploadFileUtil读取inputstream以对其进行计数。在该函数中,仅对FileItem:items进行检索并检查表单submitok中的文件字段,我感到困惑。。。getUploadFileCount正在使用inputstream。。。您需要倒带,这可能是不可能的,或者以一次性模式处理输入;迭代器iter=formItems.Iterator;//迭代窗体的字段,而iter.hasNext{FileItem item=FileItem iter.next;//如果!item.isFormField{String fileName=newProfileImage.getFileName;
//if(UploadFileUtil.getUploadFileCount(request) != 1)
//    throw new FileUploadException("There is Multiple/None File upload for Profile Photo. ");