Skip to content

Commit

Permalink
LPS-13436 Cannot Change Overall Max file size: Control Panel GUI is n…
Browse files Browse the repository at this point in the history
…ot taking precedence over Portal-ext environment

git-svn-id: svn://svn.liferay.com/repos/public/portal/trunk@66961 05bdf26c-840f-0410-9ced-eb539d925f36
  • Loading branch information
rotty3000 committed Nov 22, 2010
1 parent 8820bac commit 9711c0d
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.kernel.util.HtmlUtil;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.StringUtil;
Expand All @@ -33,7 +34,10 @@
import com.liferay.portal.service.OrganizationLocalServiceUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.upload.LiferayFileItemFactory;
import com.liferay.portal.upload.LiferayFileUpload;
import com.liferay.portal.upload.LiferayServletRequest;
import com.liferay.portal.upload.UploadServletRequestImpl;
import com.liferay.portal.util.PrefsPropsUtil;
import com.liferay.portal.util.PropsValues;

import java.io.File;
Expand All @@ -56,7 +60,6 @@
import javax.xml.transform.stream.StreamResult;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItem;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

Expand All @@ -66,6 +69,7 @@

/**
* @author Ivica Cardic
* @author Raymond Augé
*/
public abstract class BaseCommandReceiver implements CommandReceiver {

Expand Down Expand Up @@ -150,46 +154,56 @@ public void fileUpload(
CommandArgument argument, HttpServletRequest request,
HttpServletResponse response) {

ServletFileUpload upload = new ServletFileUpload(
new LiferayFileItemFactory(
UploadServletRequestImpl.DEFAULT_TEMP_DIR));

List<FileItem> items = null;
String returnValue = null;

try {
items = upload.parseRequest(request);
}
catch (FileUploadException fue) {
throw new FCKException(fue);
}
ServletFileUpload upload = new LiferayFileUpload(
new LiferayFileItemFactory(
UploadServletRequestImpl.UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR),
request);

Map<String, Object> fields = new HashMap<String, Object>();
upload.setFileSizeMax(
PrefsPropsUtil.getLong(
PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE));

for (FileItem item : items) {
if (item.isFormField()) {
fields.put(item.getFieldName(), item.getString());
}
else {
fields.put(item.getFieldName(), item);
}
}
LiferayServletRequest liferayServletRequest =
new LiferayServletRequest(request);

DiskFileItem fileItem = (DiskFileItem)fields.get("NewFile");
List<FileItem> items = upload.parseRequest(liferayServletRequest);

String fileName = StringUtil.replace(
fileItem.getName(), CharPool.BACK_SLASH, CharPool.SLASH);
String[] fileNameArray = StringUtil.split(fileName, "/");
fileName = fileNameArray[fileNameArray.length - 1];
Map<String, Object> fields = new HashMap<String, Object>();

String extension = _getExtension(fileName);
for (FileItem item : items) {
if (item.isFormField()) {
fields.put(item.getFieldName(), item.getString());
}
else {
fields.put(item.getFieldName(), item);
}
}

String returnValue = null;
DiskFileItem fileItem = (DiskFileItem)fields.get("NewFile");

String fileName = StringUtil.replace(
fileItem.getName(), CharPool.BACK_SLASH, CharPool.SLASH);
String[] fileNameArray = StringUtil.split(fileName, "/");
fileName = fileNameArray[fileNameArray.length - 1];

String extension = _getExtension(fileName);

try {
returnValue = fileUpload(
argument, fileName, fileItem.getStoreLocation(), extension);
}
catch (FCKException fcke) {
catch (Exception e) {
FCKException fcke = null;

if (e instanceof FCKException) {
fcke = (FCKException)e;
}
else {
fcke = new FCKException(e);
}

Throwable cause = fcke.getCause();

returnValue = "203";
Expand All @@ -211,6 +225,14 @@ else if (causeString.indexOf("FileNameException") != -1) {
else if (causeString.indexOf("PrincipalException") != -1) {
returnValue = "207";
}
else if ((causeString.indexOf("ImageSizeException") != -1) ||
(causeString.indexOf("FileSizeException") != -1)) {

returnValue = "208";
}
else if (causeString.indexOf("SystemException") != -1) {
returnValue = "209";
}
else {
throw fcke;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@

package com.liferay.portal.upload;

import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.upload.UploadServletRequest;
import com.liferay.portal.kernel.util.GetterUtil;
import com.liferay.portal.util.PropsUtil;
import com.liferay.portal.kernel.util.PropsKeys;
import com.liferay.portal.util.PrefsPropsUtil;
import com.liferay.util.SystemProperties;

import java.io.File;
Expand All @@ -37,24 +38,29 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
* @author Brian Wing Shun Chan
* @author Zongliang Li
* @author Harry Mark
* @author Raymond Augé
*/
public class UploadServletRequestImpl
extends HttpServletRequestWrapper implements UploadServletRequest {

public static final long DEFAULT_SIZE_MAX = GetterUtil.getLong(
PropsUtil.get(UploadServletRequestImpl.class.getName() + ".max.size"));
public static File UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR = null;

public static final File DEFAULT_TEMP_DIR = new File(
GetterUtil.getString(PropsUtil.get(
UploadServletRequestImpl.class.getName() + ".temp.dir"),
SystemProperties.get(SystemProperties.TMP_DIR)));
static {
try {
UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR = new File(
PrefsPropsUtil.getString(
PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR,
SystemProperties.get(SystemProperties.TMP_DIR)));
}
catch (SystemException se) {
}
}

public UploadServletRequestImpl(HttpServletRequest request) {
super(request);
Expand All @@ -63,9 +69,12 @@ public UploadServletRequestImpl(HttpServletRequest request) {

try {
ServletFileUpload servletFileUpload = new LiferayFileUpload(
new LiferayFileItemFactory(DEFAULT_TEMP_DIR), request);
new LiferayFileItemFactory(
UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR), request);

servletFileUpload.setSizeMax(DEFAULT_SIZE_MAX);
servletFileUpload.setSizeMax(
PrefsPropsUtil.getLong(
PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_MAX_SIZE));

_lsr = new LiferayServletRequest(request);

Expand Down Expand Up @@ -97,16 +106,16 @@ public UploadServletRequestImpl(HttpServletRequest request) {
_params.put(fileItem.getFieldName(), fileItems);
}
}
catch (FileUploadException fue) {
_log.error(fue, fue);
catch (Exception e) {
_log.error(e, e);
}
}

public void cleanUp() {
if ((_params != null) && !_params.isEmpty()) {
for (LiferayFileItem[] fileItems : _params.values()) {
for (int i = 0; i < fileItems.length; i++) {
fileItems[i].delete();
for (LiferayFileItem _fileItem : fileItems) {
_fileItem.delete();
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import com.liferay.portal.service.ServiceComponentLocalServiceUtil;
import com.liferay.portal.struts.PortletAction;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.upload.UploadServletRequestImpl;
import com.liferay.portal.util.MaintenanceUtil;
import com.liferay.portal.util.PortalInstances;
import com.liferay.portal.util.PrefsPropsUtil;
Expand All @@ -62,6 +63,8 @@
import com.liferay.portlet.ActionResponseImpl;
import com.liferay.util.log4j.Log4JUtil;

import java.io.File;

import java.util.Enumeration;
import java.util.Map;

Expand Down Expand Up @@ -480,6 +483,9 @@ protected void updateFileUploads(
preferences.setValue(
PropsKeys.UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR,
uploadServletRequestImplTempDir);

UploadServletRequestImpl.UPLOAD_SERVLET_REQUEST_IMPL_TEMP_DIR =
new File(uploadServletRequestImplTempDir);
}

preferences.setValue(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -478,7 +478,7 @@ public interface PropsKeys {
public static final String DEFAULT_WAP_THEME_ID = "default.wap.theme.id";

public static final String DIRECT_SERVLET_CONTEXT_RELOAD = "direct.servlet.context.reload";

public static final String DIRECT_SERVLET_CONTEXT_ENABLED = "direct.servlet.context.enabled";

public static final String DISCUSSION_THREAD_VIEW = "discussion.thread.view";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,12 @@
case 207:
alert( 'You do not have the permission to upload to this folder.' );
break ;
case 208:
alert( 'File size exceeds upload limit.' );
break ;
case 209:
alert( 'An internal server error occured.' );
break ;

default :
alert( 'Error on file upload. Error number: ' + errorNumber ) ;
Expand Down
6 changes: 4 additions & 2 deletions portal-web/docroot/html/js/liferay/upload.js
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ AUI().add(
fileAddError: function(file, error_code, msg) {
var instance = this;

if (error_code == -110) {
if (error_code == SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT) {
var ul = instance.getFileListUl();

ul.append('<li class="upload-file upload-error"><span class="file-title">' + file.name + '</span> <span class="error-message">' + instance._invalidFileSizeText + '</span></li>');
Expand Down Expand Up @@ -299,7 +299,9 @@ AUI().add(
instance.fileCancelled(file, error_code, msg);
}

if (error_code == SWFUpload.UPLOAD_ERROR.HTTP_ERROR) {
if ((error_code == SWFUpload.UPLOAD_ERROR.HTTP_ERROR) ||
(error_code == SWFUpload.UPLOAD_ERROR.IO_ERROR)) {

var fileId = instance._namespace(file.id);
var li = A.one('#' + fileId);

Expand Down

0 comments on commit 9711c0d

Please sign in to comment.