diff --git a/dotCMS/src/main/java/com/dotcms/contenttype/transform/field/LegacyFieldTransformer.java b/dotCMS/src/main/java/com/dotcms/contenttype/transform/field/LegacyFieldTransformer.java index f077977a3049..a09fce09ee0e 100644 --- a/dotCMS/src/main/java/com/dotcms/contenttype/transform/field/LegacyFieldTransformer.java +++ b/dotCMS/src/main/java/com/dotcms/contenttype/transform/field/LegacyFieldTransformer.java @@ -108,15 +108,16 @@ private static String buildLegacyFieldContent(Field field){ } private static String buildNewFieldDbColumn(com.dotmarketing.portlets.structure.model.Field oldField){ - String fieldContent = (oldField.getFieldContentlet()!=null) + String fieldContent = (oldField.getFieldContentlet()!=null) ? (oldField.getFieldContentlet().startsWith("binary")) ? "system_field" : oldField.getFieldContentlet() : null; - + return fieldContent; - } - private static Field transformToNew(final com.dotmarketing.portlets.structure.model.Field oldField) { + } + + private static Field transformToNew(final com.dotmarketing.portlets.structure.model.Field oldField) { final String fieldType = oldField.getFieldType(); @SuppressWarnings("serial") diff --git a/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java b/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java index 6edc620e6487..9856f31e20e3 100644 --- a/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java +++ b/dotCMS/src/main/java/com/dotcms/rest/ContentResource.java @@ -320,6 +320,7 @@ public Response unlockContent(@Context HttpServletRequest request, throws DotDataException, DotSecurityException, JSONException { InitDataObject initData = webResource.init(params, true, request, false, null); + Map paramsMap = initData.getParamsMap(); String callback = paramsMap.get(RESTParams.CALLBACK.getValue()); String language = paramsMap.get(RESTParams.LANGUAGE.getValue()); @@ -705,6 +706,9 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp Map map = new HashMap(); List usedBinaryFields = new ArrayList(); + String binaryFieldsInput = null; + List binaryFields = new ArrayList<>(); + for (BodyPart part : multipart.getBodyParts()) { ContentDisposition cd = part.getContentDisposition(); String name = cd != null && cd.getParameters().containsKey("name") ? cd.getParameters() @@ -714,6 +718,21 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp .equals("json")) { try { processJSON(contentlet, part.getEntityAs(InputStream.class)); + try { + binaryFieldsInput = + webResource.processJSON(part.getEntityAs(InputStream.class)).get("binary_fields") + .toString(); + } catch (NullPointerException npe) { + } + if (UtilMethods.isSet(binaryFieldsInput)) { + if (!binaryFieldsInput.contains(",")) { + binaryFields.add(binaryFieldsInput); + } else { + for (String binaryFieldSplit : binaryFieldsInput.split(",")) { + binaryFields.add(binaryFieldSplit.trim()); + } + } + } } catch (JSONException e) { Logger.error(this.getClass(), "Error processing JSON for Stream", e); @@ -794,7 +813,11 @@ private Response multipartPUTandPOST(HttpServletRequest request, HttpServletResp String fieldName = ff.getFieldContentlet(); if (fieldName.startsWith("binary") && !usedBinaryFields.contains(fieldName)) { - contentlet.setBinary(ff.getVelocityVarName(), tmp); + String fieldVarName = ff.getVelocityVarName(); + if (binaryFields.size() > 0) { + fieldVarName = binaryFields.remove(0); + } + contentlet.setBinary(fieldVarName, tmp); usedBinaryFields.add(fieldName); break; }