1

実際には、jsp で一般的なアップロード ライブラリを使用してアップロードする前に、アップロードするファイル数を取得しようとしています。ファイル数を取得する関数を作成しました。これは次のとおりです。

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;
}

そして、この関数をビジネス ロジックで使用します。

public void doChangeProfilePhoto(HttpServletRequest request) throws FileUploadException
{
    if(UploadFileUtil.getUploadFileCount(request) != 1)
        throw new FileUploadException("There is Multiple/None File upload for Profile Photo. ");
    ProfileImage newProfileImage = new ProfileImage();
    newProfileImage.setFileName("sam.jpg");
    if(new UploadBPOProfilePhotoImpl().uploadPhoto(newProfileImage, request))
    {}
}

そして、このコードでは、uploadPhoto 関数を呼び出した後、次のようにファイルを 1 つずつ取得するために同じコードを使用しています。

    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
    }     

ここで問題が発生するのは、このコードを使用すると、ファイルをカウントするために同じコードを使用したときにファイルが取得されないということです

そして、doChangeProfilePhoto で次のようにファイル数を取得するために使用したこの 2 行にコメントすると、次のようになります。

//if(UploadFileUtil.getUploadFileCount(request) != 1)
//    throw new FileUploadException("There is Multiple/None File upload for Profile Photo. ");

その後、その作業。一度使用すると、ファイルを取得できなくなったのはなぜですか.その背後にある理由は何ですか?一般的なアップロードを使用してファイルをカウントする方法はありますか?また、それらの名前についても?

4

0 に答える 0