Как загрузить новый файл с метаданными с помощью страницы формы общего доступа на открытом воздухе?

#file-upload #alfresco #alfresco-share

#загрузка файла #на открытом воздухе #общий доступ на открытом воздухе

Вопрос:

Я работаю с Alfresco Community Edition. Вот код, который я пробовал до сих пор: Alfresco-Smalgyax.

Я создал проект «Все в одном«, чтобы добавить новую страницу в меню «Создать ..«. Моя страница загружается просто отлично.
Я следил за добавлением пункта меню в меню «Создать …» в руководстве DocLib, прежде чем добавлять настраиваемое поле формы и JavaScript на недавно добавленную страницу общего доступа. Я добавил настраиваемое поле для загрузки файла cm:content . Я добавил немного Javascript, чтобы получить и установить значение cm:name и mimetype после выбора загружаемого файла.

Все метаданные обрабатываются правильно. Однако файл не является.

Ранее я успешно смог загрузить файл с пользовательскими данными, следуя документации: Обработка составных форм. Однако это создало совершенно новую конечную точку службы и пользовательскую страницу, которая не унаследовала тот же внешний вид, что и остальная часть веб-приложения.

Страница в разделе создать .. имеет тот же внешний вид, что и остальная часть сайта. Но загрузка завершается неудачно, есть ли способ улучшить внешний вид сайта и загрузить файл с метаданными и задать пользовательский тип в Alfresco?


Разъяснение

cm:content Поле было настроено следующим образом:

 <field id="cm:content" label-id="" mandatory="true">
  <constraint-handlers>
    <constraint type="MANDATORY" event="input"
                validation-handler="Smalgyax.forms.validation.setNameValue" />
  </constraint-handlers>
  <control template="/file.ftl">
    <control-param name="editorAppearance">explorer</control-param>                      
  </control>
</field>
 

file.ftl задает элемент ввода формы следующим образом:

 <input id="${fieldHtmlId}" type="file" 
       name="${field.name}" 
  <#if field.disabled>disabled="true"</#if> />
 

кроме того, file.ftl добавляет пользовательский JavaScript на страницу, потому что я не смог успешно загрузить его как отдельный файл с помощью

 <forms>
  <dependencies>
    <js src="/set-name-field.js"/>
  </dependencies>
  <!-- form definition here -->
 

Ответ №1:

Как ясно видно из документации Alfresco, он не будет поддерживать функцию загрузки. Тип поля показывает cm:содержимое, которое не будет принимать файл для принятия файла, даже если вы настроили и добавили опцию проводника в коде. Именно по этой причине загружается не файл, а только содержимое.

https://docs.alfresco.com/community/tasks/dev-extensions-share-tutorials-add-menuitem-create-menu.html

  <field id="cm:content" label-id="">
             <control>
                  <control-param name="editorAppearance">explorer</control-param>
               </control>
   </field>
 

Для загрузки файла вы должны использовать html-компонент, как показано ниже,

 <input type="file" multiple="" name="files[]" class="dnd-file-selection-button">
 

и javascript должен быть таким же, как file-upload.js и dnd-upload.js .

 http://localhost:8180/share/res/components/upload/file-upload.js

http://localhost:8180/share/res/components/upload/dnd-upload.js
 

Пожалуйста, перейдите по ссылке ниже, чтобы загрузить файл с помощью вызова ajax.
https://hub.alfresco.com/t5/alfresco-content-services-forum/how-to-upload-a-file-from-a-custom-share-page/td-p/32361