cmsnewresourceupload.java
来自「找了很久才找到到源代码」· Java 代码 · 共 966 行 · 第 1/3 页
JAVA
966 行
}
} catch (RuntimeException e) {
// assume file was not present
} catch (Exception e) {
// assume file was not present
}
}
super.actionCloseDialog();
}
/**
* Updates the file type and renames the file if desired.<p>
*
* @throws JspException if inclusion of error dialog fails
*/
public void actionUpdateFile() throws JspException {
try {
CmsResource res = getCms().readResource(getParamResource(), CmsResourceFilter.ALL);
I_CmsResourceType oldType = OpenCms.getResourceManager().getResourceType(res.getTypeId());
int newType = oldType.getTypeId();
if (!oldType.getTypeName().equals(getParamNewResourceType())) {
if (CmsStringUtil.isEmptyOrWhitespaceOnly(getParamNewResourceType())) {
// automatic resource type selection
newType = OpenCms.getResourceManager().getDefaultTypeForName(res.getName()).getTypeId();
} else {
// change the type of the uploaded resource
newType = OpenCms.getResourceManager().getResourceType(getParamNewResourceType()).getTypeId();
}
getCms().chtype(getParamResource(), newType);
}
if ((getParamNewResourceName() != null) && !getParamResource().endsWith(getParamNewResourceName())) {
String newResourceName = CmsResource.getFolderPath(getParamResource()) + getParamNewResourceName();
// rename the resource
getCms().renameResource(getParamResource(), newResourceName);
setParamResource(newResourceName);
}
} catch (Throwable e) {
// error updating file, show error dialog
setParamMessage(Messages.get().getBundle(getLocale()).key(Messages.ERR_UPLOAD_FILE_0));
includeErrorpage(this, e);
}
}
/**
* Uploads the specified file and unzips it, if selected.<p>
*
* @throws JspException if inclusion of error dialog fails
*/
public void actionUpload() throws JspException {
// determine the type of upload
boolean unzipFile = Boolean.valueOf(getParamUnzipFile()).booleanValue();
// Suffix for error messages (e.g. when exceeding the maximum file upload size)
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getParamClientFolder())) {
CmsUserSettings userSettings = new CmsUserSettings(getCms());
userSettings.setUploadAppletClientFolder(getParamClientFolder());
try {
userSettings.save(getCms());
} catch (CmsException e) {
// it's not fatal if the client folder for the applet file chooser is not possible
if (LOG.isErrorEnabled()) {
LOG.error(Messages.get().getBundle(getLocale()).key(
Messages.ERR_UPLOAD_STORE_CLIENT_FOLDER_1,
new Object[] {getCms().getRequestContext().currentUser().getName()}), e);
}
}
}
try {
// get the file item from the multipart request
Iterator i = getMultiPartFileItems().iterator();
FileItem fi = null;
while (i.hasNext()) {
fi = (FileItem)i.next();
if (fi.getName() != null) {
// found the file object, leave iteration
break;
} else {
// this is no file object, check next item
continue;
}
}
if (fi != null) {
String fileName = fi.getName();
long size = fi.getSize();
long maxFileSizeBytes = OpenCms.getWorkplaceManager().getFileBytesMaxUploadSize(getCms());
// check file size
if ((maxFileSizeBytes > 0) && (size > maxFileSizeBytes)) {
// file size is larger than maximum allowed file size, throw an error
throw new CmsWorkplaceException(Messages.get().container(
Messages.ERR_UPLOAD_FILE_SIZE_TOO_HIGH_1,
new Long(maxFileSizeBytes / 1024)));
}
byte[] content = fi.get();
fi.delete();
if (unzipFile) {
// zip file upload
String currentFolder = getParamUploadFolder();
if (CmsStringUtil.isEmpty(currentFolder)) {
// no upload folder parameter found, get current folder
currentFolder = getParamCurrentFolder();
}
if (CmsStringUtil.isEmpty(currentFolder) || !currentFolder.startsWith("/")) {
// no folder information found, guess upload folder
currentFolder = computeCurrentFolder();
}
// import the zip contents
new CmsImportFolder(content, currentFolder, getCms(), false);
} else {
// single file upload
String newResname = CmsResource.getName(fileName.replace('\\', '/'));
// determine Title property value to set on new resource
String title = newResname;
if (title.lastIndexOf('.') != -1) {
title = title.substring(0, title.lastIndexOf('.'));
}
List properties = new ArrayList(1);
CmsProperty titleProp = new CmsProperty();
titleProp.setName(CmsPropertyDefinition.PROPERTY_TITLE);
if (OpenCms.getWorkplaceManager().isDefaultPropertiesOnStructure()) {
titleProp.setStructureValue(title);
} else {
titleProp.setResourceValue(title);
}
properties.add(titleProp);
newResname = getCms().getRequestContext().getFileTranslator().translateResource(newResname);
setParamNewResourceName(newResname);
setParamResource(newResname);
setParamResource(computeFullResourceName());
// determine the resource type id from the given information
int resTypeId = OpenCms.getResourceManager().getDefaultTypeForName(newResname).getTypeId();
if (!getCms().existsResource(getParamResource(), CmsResourceFilter.IGNORE_EXPIRATION)) {
try {
// create the resource
getCms().createResource(getParamResource(), resTypeId, content, properties);
} catch (CmsDbSqlException sqlExc) {
// SQL error, probably the file is too large for the database settings, delete file
getCms().lockResource(getParamResource());
getCms().deleteResource(getParamResource(), CmsResource.DELETE_PRESERVE_SIBLINGS);
throw sqlExc;
}
} else {
checkLock(getParamResource());
CmsFile file = getCms().readFile(getParamResource(), CmsResourceFilter.IGNORE_EXPIRATION);
byte[] contents = file.getContents();
try {
getCms().replaceResource(getParamResource(), resTypeId, content, null);
} catch (CmsDbSqlException sqlExc) {
// SQL error, probably the file is too large for the database settings, restore content
file.setContents(contents);
getCms().writeFile(file);
throw sqlExc;
}
}
}
} else {
throw new CmsWorkplaceException(Messages.get().container(Messages.ERR_UPLOAD_FILE_NOT_FOUND_0));
}
} catch (Throwable e) {
// error uploading file, show error dialog
setParamMessage(Messages.get().getBundle(getLocale()).key(Messages.ERR_UPLOAD_FILE_0));
setAction(ACTION_SHOWERROR);
includeErrorpage(this, e);
}
}
/**
* Builds the list of possible types for the uploaded file.<p>
*
* @return the list of possible files for the uploaded resource
*/
public String buildTypeList() {
return buildTypeList(this, false);
}
/**
* Creates the HTML code of the file upload applet with all required parameters.<p>
*
* @return string containing the applet HTML code
*/
public String createAppletCode() {
StringBuffer applet = new StringBuffer(2048);
// collect some required server data first
String scheme = getJsp().getRequest().getScheme();
String host = getJsp().getRequest().getServerName();
String path = OpenCms.getStaticExportManager().getVfsPrefix();
int port = getJsp().getRequest().getServerPort();
String webapp = scheme + "://" + host + ":" + port + OpenCms.getSystemInfo().getContextPath();
// get all file extensions
String fileExtensions = "";
Map extensions = OpenCms.getResourceManager().getExtensionMapping();
Iterator keys = extensions.entrySet().iterator();
while (keys.hasNext()) {
Map.Entry entry = (Map.Entry)keys.next();
String key = (String)entry.getKey();
String value = (String)entry.getValue();
fileExtensions += key + "=" + value + ",";
}
fileExtensions = fileExtensions.substring(0, fileExtensions.length() - 1);
// get the file size upload limitation value (value is in bytes for the applet)
long maxFileSize = OpenCms.getWorkplaceManager().getFileBytesMaxUploadSize(getCms());
// get the current folder
String currentFolder = getParamCurrentFolder();
// get the current session id
HttpSession session = getJsp().getRequest().getSession(false);
// we assume we always have a session here, otherwise an unhandled NPE will occur
String sessionId = session.getId();
// define the required colors.
// currently this is hard coded here
String colors = "bgColor=#C0C0C0,outerBorderRightBottom=#333333,outerBorderLeftTop=#C0C0C0";
colors += ",innerBorderRightBottom=#777777,innerBorderLeftTop=#F0F0F0";
colors += ",bgHeadline=#000066,colorHeadline=#FFFFFF";
colors += ",colorText=#000000,progessBar=#E10050";
// create the upload applet html code
applet.append("<applet code=\"org.opencms.applet.upload.FileUploadApplet.class\" archive=\"");
applet.append(webapp);
applet.append("/resources/components/upload_applet/upload.jar\" width=\"500\" height=\"100\">\n");
applet.append("<param name=\"opencms\" value=\"");
applet.append(scheme);
applet.append("://");
applet.append(host);
applet.append(":");
applet.append(port);
applet.append(getSkinUri());
applet.append("filetypes/\">\n");
applet.append("<param name=\"target\" value=\"");
applet.append(scheme);
applet.append("://");
applet.append(host);
applet.append(":");
applet.append(port);
applet.append(path);
applet.append("/system/workplace/commons/newresource_upload.jsp\">\n");
applet.append("<param name=\"redirect\" value=\"");
applet.append(scheme);
applet.append("://");
applet.append(host);
applet.append(":");
applet.append(port);
applet.append(path);
// check if the redirect url is given by request parameter. if not use the default
if (CmsStringUtil.isEmpty(getParamRedirectUrl())) {
applet.append(CmsWorkplace.FILE_EXPLORER_FILELIST);
} else {
applet.append(getParamRedirectUrl());
}
// append some parameters to prevent caching of URL by Applet
applet.append("?time=" + System.currentTimeMillis());
applet.append("\">\n");
applet.append("<param name=\"targetframe\" value=\"");
applet.append(getParamTargetFrame());
applet.append("\">\n");
applet.append("<param name=\"error\" value=\"");
applet.append(scheme);
applet.append("://");
applet.append(host);
applet.append(":");
applet.append(port);
applet.append(path);
applet.append("/system/workplace/views/explorer/explorer_files.jsp\">\n");
applet.append("<param name=\"sessionId\" value=\"");
applet.append(sessionId);
applet.append("\">\n");
applet.append("<param name=\"filelist\" value=\"");
applet.append(currentFolder);
applet.append("\">\n");
applet.append("<param name=\"filefilterselection\" value=\"");
applet.append(getAppletFileFilterPreselectionConstant());
applet.append("\">\n");
applet.append("<param name=\"colors\" value=\"");
applet.append(colors);
applet.append("\">\n");
applet.append("<param name=\"fileExtensions\" value=\"");
applet.append(fileExtensions);
applet.append("\">\n\n");
applet.append("<param name=\"maxsize\" value=\"");
applet.append(maxFileSize);
applet.append("\">\n");
applet.append("<param name=\"actionOutputSelect\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_ACTION_SELECT_0));
applet.append("\">\n");
applet.append("<param name=\"actionOutputCount\"value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_ACTION_COUNT_0));
applet.append("\">\n");
applet.append("<param name=\"actionOutputCreate\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_ACTION_CREATE_0));
applet.append("\">\n");
applet.append("<param name=\"actionOutputUpload\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_ACTION_UPLOAD_0));
applet.append("\">\n");
applet.append("<param name=\"actionOverwriteCheck\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_ACTION_OVERWRITECHECK_0));
applet.append("\">\n");
applet.append("<param name=\"messageOutputUpload\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_MESSAGE_UPLOAD_0));
applet.append("\">\n");
applet.append("<param name=\"messageOutputErrorZip\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_MESSAGE_ERROR_ZIP_0));
applet.append("\">\n");
applet.append("<param name=\"messageOutputErrorSize\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_MESSAGE_ERROR_SIZE_0));
applet.append("\">\n");
applet.append("<param name=\"messageNoPreview\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_MESSAGE_NOPREVIEW_0));
applet.append("\">\n");
applet.append("<param name=\"messageOutputAdding\" value=\"");
applet.append(Messages.get().getBundle(getLocale()).key(Messages.GUI_UPLOADAPPLET_MESSAGE_ADDING_0));
applet.append(" \">\n");
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?