0

私の質問は、setSizeThreshold と setRepository がどのように機能するかです。

私が間違っている場合は修正してください。私の理解では、ファイルサイズ> setSizeThreshold(数値が何であれ)の場合、ファイルをsetRepository一時保存に送信する必要があります。しかし、このファイルが setRepository(filePath) に保存されていることはありません。私は FileCleaningTracker を設定しなかったので、技術的にはファイルはまだ setRepository(filePath) にあるはずですか?

  1. リポジトリが機能しているかどうかをテストする方法は? 方法はありますか?

これが私のコードです。すべてがドキュメントからのもので、特別なことは何もありません。

boolean isMultipart = ServletFileUpload.isMultipartContent(request);

    if(isMultipart){

        // Create a factory for disk-based file items
        DiskFileItemFactory factory = new DiskFileItemFactory();

        // Set factory constraints
        factory.setSizeThreshold(20480);   // purposely make it small to test
        factory.setRepository(new File(root + "tempFile"));

        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);

        //upload.setSizeMax(20480);    //  This makes the upload stop

        try
        {
            // Parse the request
            List<FileItem> items = upload.parseRequest(request);

            // Process the uploaded items
            Iterator<FileItem> i = items.iterator();

            while(i.hasNext())
            {

                FileItem item = i.next();

                //request.setAttribute("item", item);

                if(item.isFormField()){
                    String fieldName = item.getFieldName();
                    String fieldValue = item.getString();

                    out.println(fieldName + ": " + fieldValue);
                }
                else
                {
                    String fieldName = item.getFieldName();
                    String fileName = item.getName();
                    String contentType = item.getContentType();
                    boolean isInMemory = item.isInMemory();
                    long sizeInBytes = item.getSize();

                    File name = new File(item.getName());

                    // File.separator:  "/"
                    item.write( new File(root + "uploads" + File.separator + name));


                }


            }  

        } catch (FileUploadException ex)
        {
            ex.printStackTrace();
        } catch (Exception ex)
        {
            Logger.getLogger(uploadFileServlet.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

ドキュメントで

Larger items should be written to a temporary file on disk.

Very large upload requests should not be permitted.

  1. 「非常に大きい」とは正確には何ですか?非常に大きいと見なされるサイズは?

前もって感謝します...

4

1 に答える 1