mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 18:14:26 +00:00
(Scott Yeadon)
- Now uses Jakarta Commons FileUpload instead of com.oreilly.servlet. Patch SF #1380118. git-svn-id: http://scm.dspace.org/svn/repo/trunk@1387 9c30dcfa-912a-0410-8fc2-9e0234be79fd
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
1.4 beta 1
|
||||
==========
|
||||
(Scott Yeadon)
|
||||
- Now uses Jakarta Commons FileUpload instead of com.oreilly.servlet.
|
||||
Patch SF #1380118.
|
||||
|
||||
(Robert Tansley)
|
||||
- Drop unique community name constraint. Also fixes SF bug #1284055.
|
||||
|
||||
|
@@ -165,7 +165,7 @@ log.dir = /dspace/log
|
||||
# Where to temporarily store uploaded files
|
||||
upload.temp.dir = /dspace/upload
|
||||
|
||||
# Maximum size of uploaded files in bytes, must be positive
|
||||
# Maximum size of uploaded files in bytes, negative setting will result in no limit being set
|
||||
# 512Mb
|
||||
upload.max = 536870912
|
||||
|
||||
|
@@ -3,9 +3,9 @@ Libraries used by DSpace:
|
||||
activation.jar: The Java Activation Framework, used by JavaMail (v1.0.2)
|
||||
commons-cli.jar: Jakarta Commons command line processing (v1.0)
|
||||
commons-collections.jar: Jakarta Commons collections API (v3.0)
|
||||
commons-fileupload.jar: Jakarta Commons file upload package (v1.0)
|
||||
commons-dbcp.jar: Jakarta Commons database connection pool (v1.2.1)
|
||||
commons-pool.jar: Jakarta Commons object pooling API (v1.2)
|
||||
cos.jar: com.oreilly.servlet - multipart HTTP requests. 05Nov2002
|
||||
handle.jar: CNRI Handle Server (version 5.3.3)
|
||||
jakarta-poi.jar: MS file reader, used by text extraction v2.0
|
||||
jdom.jar Java DOM API library (version 1.0)
|
||||
|
BIN
dspace/lib/commons-fileupload-1.0.jar
Normal file
BIN
dspace/lib/commons-fileupload-1.0.jar
Normal file
Binary file not shown.
Binary file not shown.
53
dspace/lib/licenses/commons-fileupload.jar.license
Normal file
53
dspace/lib/licenses/commons-fileupload.jar.license
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* The Apache Software License, Version 1.1
|
||||
*
|
||||
* Copyright (c) 1999-2003 The Apache Software Foundation. All rights
|
||||
* reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. The end-user documentation included with the redistribution, if
|
||||
* any, must include the following acknowlegement:
|
||||
* "This product includes software developed by the
|
||||
* Apache Software Foundation (http://www.apache.org/)."
|
||||
* Alternately, this acknowlegement may appear in the software itself,
|
||||
* if and wherever such third-party acknowlegements normally appear.
|
||||
*
|
||||
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
|
||||
* Foundation" must not be used to endorse or promote products derived
|
||||
* from this software without prior written permission. For written
|
||||
* permission, please contact apache@apache.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "Apache"
|
||||
* nor may "Apache" appear in their names without prior written
|
||||
* permission of the Apache Group.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*
|
||||
* This software consists of voluntary contributions made by many
|
||||
* individuals on behalf of the Apache Software Foundation. For more
|
||||
* information on the Apache Software Foundation, please see
|
||||
* <http://www.apache.org/>.
|
||||
*/
|
@@ -44,13 +44,21 @@ import java.io.IOException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
import java.util.Set;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletRequestWrapper;
|
||||
|
||||
import org.dspace.core.ConfigurationManager;
|
||||
|
||||
import com.oreilly.servlet.MultipartRequest;
|
||||
import org.apache.commons.fileupload.DiskFileUpload;
|
||||
import org.apache.commons.fileupload.FileUploadException;
|
||||
import org.apache.commons.fileupload.FileItem;
|
||||
|
||||
/**
|
||||
* Based on the com.oreilly.servlet.MultipartWrapper object, this is an HTTP
|
||||
@@ -64,13 +72,16 @@ import com.oreilly.servlet.MultipartRequest;
|
||||
public class FileUploadRequest extends HttpServletRequestWrapper
|
||||
{
|
||||
/** Multipart request */
|
||||
private MultipartRequest mreq = null;
|
||||
private List items = null;
|
||||
private HashMap parameters = new HashMap();
|
||||
private HashMap fileitems = new HashMap();
|
||||
private Vector filenames = new Vector();
|
||||
private String tempDir = null;
|
||||
|
||||
/** Original request */
|
||||
private HttpServletRequest original = null;
|
||||
|
||||
/**
|
||||
* Wraps a multipart request and extracts the files
|
||||
* Parse a multipart request and extracts the files
|
||||
*
|
||||
* @param req
|
||||
* the original request
|
||||
@@ -81,26 +92,55 @@ public class FileUploadRequest extends HttpServletRequestWrapper
|
||||
|
||||
original = req;
|
||||
|
||||
String tempDir = ConfigurationManager.getProperty("upload.temp.dir");
|
||||
tempDir = ConfigurationManager.getProperty("upload.temp.dir");
|
||||
int maxSize = ConfigurationManager.getIntProperty("upload.max");
|
||||
|
||||
mreq = new MultipartRequest(req, tempDir, maxSize, "UTF-8");
|
||||
DiskFileUpload upload = new DiskFileUpload();
|
||||
|
||||
try
|
||||
{
|
||||
upload.setRepositoryPath(tempDir);
|
||||
upload.setSizeMax(maxSize);
|
||||
items = upload.parseRequest(req);
|
||||
for (Iterator i = items.iterator(); i.hasNext();)
|
||||
{
|
||||
FileItem item = (FileItem)i.next();
|
||||
if (item.isFormField())
|
||||
{
|
||||
parameters.put(item.getFieldName(), item.getString("UTF-8"));
|
||||
}
|
||||
else
|
||||
{
|
||||
parameters.put(item.getFieldName(), item.getName());
|
||||
fileitems.put(item.getFieldName(), item);
|
||||
filenames.add(item.getName());
|
||||
|
||||
String filename = getFilename(item.getName());
|
||||
item.write(new File(tempDir + File.separator + filename));
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// Methods to replace HSR methods
|
||||
public Enumeration getParameterNames()
|
||||
{
|
||||
return mreq.getParameterNames();
|
||||
Collection c = parameters.keySet();
|
||||
return Collections.enumeration(c);
|
||||
}
|
||||
|
||||
public String getParameter(String name)
|
||||
{
|
||||
return mreq.getParameter(name);
|
||||
return (String)parameters.get(name);
|
||||
}
|
||||
|
||||
public String[] getParameterValues(String name)
|
||||
{
|
||||
return mreq.getParameterValues(name);
|
||||
return (String[])parameters.values().toArray();
|
||||
}
|
||||
|
||||
public Map getParameterMap()
|
||||
@@ -111,31 +151,32 @@ public class FileUploadRequest extends HttpServletRequestWrapper
|
||||
while (eNum.hasMoreElements())
|
||||
{
|
||||
String name = (String) eNum.nextElement();
|
||||
map.put(name, mreq.getParameterValues(name));
|
||||
map.put(name, getParameterValues(name));
|
||||
}
|
||||
|
||||
return map;
|
||||
}
|
||||
|
||||
// Methods only in MultipartRequest
|
||||
public Enumeration getFileNames()
|
||||
{
|
||||
return mreq.getFileNames();
|
||||
}
|
||||
|
||||
public String getFilesystemName(String name)
|
||||
{
|
||||
return mreq.getFilesystemName(name);
|
||||
String filename = getFilename(((FileItem)fileitems.get(name)).getName());
|
||||
return tempDir + File.separator + filename;
|
||||
}
|
||||
|
||||
public String getContentType(String name)
|
||||
{
|
||||
return mreq.getContentType(name);
|
||||
return ((FileItem)fileitems.get(name)).getContentType();
|
||||
}
|
||||
|
||||
public File getFile(String name)
|
||||
{
|
||||
return mreq.getFile(name);
|
||||
String filename = getFilename(((FileItem)fileitems.get(name)).getName());
|
||||
return new File(tempDir + File.separator + filename);
|
||||
}
|
||||
|
||||
public Enumeration getFileNames()
|
||||
{
|
||||
return filenames.elements();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,4 +188,18 @@ public class FileUploadRequest extends HttpServletRequestWrapper
|
||||
{
|
||||
return original;
|
||||
}
|
||||
|
||||
// Required due to the fact the contents of getName() may vary based on browser
|
||||
private String getFilename(String filepath)
|
||||
{
|
||||
String filename = filepath;
|
||||
|
||||
int index = filepath.lastIndexOf(File.separator);
|
||||
if (index > -1)
|
||||
{
|
||||
filename = filepath.substring(index);
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user