Open Source Repository

Home /jodd/jodd-3.3.2 | Repository Home


jodd/servlet/upload/impl/DiskFileUploadFactory.java
// Copyright (c) 2003-2012, Jodd Team (jodd.org). All Rights Reserved.

package jodd.servlet.upload.impl;

import jodd.servlet.upload.FileUpload;
import jodd.servlet.upload.MultipartRequestInputStream;
import jodd.servlet.upload.FileUploadFactory;
import jodd.util.SystemUtil;

import java.io.File;
import java.io.IOException;

/**
 * Factory for {@link jodd.servlet.upload.impl.DiskFileUpload}
 */
public class DiskFileUploadFactory implements FileUploadFactory {

  protected File destFolder;

  protected int maxFileSize = 102400

  public DiskFileUploadFactory() throws IOException {
    this(SystemUtil.getTempDir());
  }

  public DiskFileUploadFactory(String destFolderthrows IOException {
    this(destFolder, 102400);

  }

  public DiskFileUploadFactory(String destFolder, int maxFileSizethrows IOException {
    setUploadDir(destFolder);
    this.maxFileSize = maxFileSize;
  }


  public DiskFileUploadFactory setUploadDir(String destFolderthrows IOException {
    if (destFolder == null) {
      destFolder = SystemUtil.getTempDir();
    }
    File destination = new File(destFolder);
    if (destination.exists() == false) {
      destination.mkdirs();
    }
    if (destination.isDirectory() == false) {
      throw new IOException("Invalid destination folder: " + destFolder);
    }
    this.destFolder = destination;
    return this;
  }

  public int getMaxFileSize() {
    return maxFileSize;
  }

  /**
   * Sets maximum file upload size. Setting to -1 will disable this constraint.
   */
  public DiskFileUploadFactory setMaxFileSize(int maxFileSize) {
    this.maxFileSize = maxFileSize;
    return this;
  }

  /**
   * {@inheritDoc}
   */
  public FileUpload create(MultipartRequestInputStream input) {
    return new DiskFileUpload(input, destFolder, maxFileSize);
  }

}