001 package de.deepamehta.plugins.files;
002
003 import org.apache.commons.fileupload.FileItem;
004
005 import java.io.File;
006
007
008
009 /**
010 * An uploaded file.
011 * <p>
012 * Files are uploaded via the REST API by POSTing <code>multipart/form-data</code> to the <code>/files</code>
013 * resource.
014 * <p>
015 * Client-side support: the public API of the <code>deepamehta-files</code> plugin provides a method
016 * <code>dm4c.get_plugin("de.deepamehta.files").open_upload_dialog()</code> that allows the user to
017 * choose and upload a file.</p>
018 * <p>
019 * At server-side a plugin accesses the upload file via the
020 * {@link de.deepamehta.core.service.Plugin#executeCommandHook}. ### FIXDOC</p>
021 *
022 * @author <a href="mailto:jri@deepamehta.de">Jörg Richter</a>
023 */
024 public class UploadedFile {
025
026 // ---------------------------------------------------------------------------------------------- Instance Variables
027
028 private FileItem fileItem;
029
030 // ---------------------------------------------------------------------------------------------------- Constructors
031
032 public UploadedFile(FileItem fileItem) {
033 this.fileItem = fileItem;
034 }
035
036 // -------------------------------------------------------------------------------------------------- Public Methods
037
038 /**
039 * Returns the original (client-side) file name.
040 */
041 public String getName() {
042 return fileItem.getName();
043 }
044
045 public long getSize() {
046 return fileItem.getSize();
047 }
048
049 /**
050 * Returns the content type passed by the browser or null if not defined.
051 */
052 public String getMediaType() {
053 return fileItem.getContentType();
054 }
055
056 // ---
057
058 @Override
059 public String toString() {
060 return "file \"" + getName() + "\" (" + getMediaType() + "), " + getSize() + " bytes";
061 }
062
063 // ----------------------------------------------------------------------------------------- Package Private Methods
064
065 void write(File file) throws Exception {
066 fileItem.write(file); // throws Exception
067 }
068 }