Há alguma maneira de subir um arquivo para o GED usando a API REST do Fluig?
Segue um exemplo abaixo de Consulta de documentos
$.ajax({
url: '/api/public/ecm/document/listDocumentWithChildren/' + FOLDER_ID,
type: 'GET',
async: false,
contentType: "application/json",
success: (data) => {
// Garante execução única
if(Object.keys(ATTACHMENT_LIST).length == 0 && $('#tipoVaga').val() == "Matriz") {
// Cria um objeto onde cada KEY corresponde a um documento na pasta do funcionário
let documentChildren = data.content[0].children
if(documentChildren.length > 0) {
documentChildren.map((e) => ATTACHMENT_LIST[e.id] = e)
}
// Se o campo de anexo foi preenchido, ele tem o id do documento
// Usamos esse valor para acessar a KEY do objeto montado anteriormente (hashmap) e obter dados de interesse
let anexoRGFrente = $('#anexoRGFrente').val()
if(anexoRGFrente) {
renderAnexo({
title: "RG (Frente)",
url: ATTACHMENT_LIST[anexoRGFrente].fileURL,
mediaType: getMediaType(ATTACHMENT_LIST[anexoRGFrente].description)
})
}
'
Segue abaixo exemplo de upload
// Upload de arquivos
$('.btn.--upload').on("click", (e)=> {
let ARR_DOCUMENTID = []
const FOLDER_ID = $('#codigoPasta').val()
let form = new FormData()
let config = DatasetFactoryAuth.getOAuthConfig()
let request_data_ = {
url: WCMAPI.getServerURL() + '/ecm/upload',
method: 'POST',
"cache-control": "no-cache",
ajaxData: JSON.stringify({ form }),
data: {}
}
$.ajax({
url: '/ecm/upload',
method: 'POST',
data: form,
processData: false,
contentType: false,
type: 'POST',
headers: config.oauth.toHeader(config.oauth.authorize(request_data_, config.token)),
}, 'json')
let el = $(e.currentTarget)
let inputId = el.children('input').attr("id")
$(`#${inputId}`).fileupload({
dataType: 'json',
done: (e, data) => {
$.each(data.result.files, (i, file) => {
let dataFilename = el.find("input").attr("data-filename")
let inputName = el.find("input").attr("data-inputname")
let multiple = el.find("input").attr("multiple")
let descricaoAnexo = `${dataFilename} - ${new moment().format('DD/MM/YYYY')}`
let extensao = getFileExtension(file.name)
const LOADING = FLUIGC.loading($('.form-box:visible'))
LOADING.show()
$.ajax({
async: true,
type: "POST",
contentType: "application/json",
url: '/api/public/ecm/document/createDocument',
headers: config.oauth.toHeader(config.oauth.authorize(request_data_, config.token)),
data: JSON.stringify({
"description": descricaoAnexo + extensao,
"parentId": FOLDER_ID,
"attachments": [{ "fileName": file.name }],
}),
error: function () {
FLUIGC.toast({
title: '',
message: "Falha ao enviar",
type: 'danger'
});
LOADING.hide()
},
success: function (data) {
let attachmentId = data.content.id
let attachmentDoc = DatasetFactoryAuth.getDownloadURL(attachmentId)
if(multiple == 'multiple'){
ARR_DOCUMENTID.push(attachmentId)
$(`#${inputName}`).val(ARR_DOCUMENTID.join(';'))
el.find(".js-anexo-texto").html(`<i class="fa fa-check-circle"></i>`)
el.addClass('--success').removeClass('--danger')
let filenameText = (file.name.length > 50) ? `${file.name.substr(0,40)}...${file.name.substr(-10)}` : file.name
el.closest(".js-anexo-box").find('p').append(`
${dataFilename}: <a href="${attachmentDoc.fileURL}" target="_blank">
<i class="fa fa-paperclip"></i> ${filenameText}
</a>
`)
}
Oi @Fluigor esse exemplo para upload se aplicaria também a páginas públicas ou apenas para páginas já autenticadas?
Fizemos um painel simplificado para usuários fazerem upload de documentos no ECM: Fluig - Upload de Arquivos no GED - YouTube
Usamos a mesma técnica que o @Fluigor mostrou acima: /ecm/upload
e depois /api/public/ecm/document/createDocument
Usamos o “DropzoneJS” (https://www.dropzonejs.com) na época para ajudar os usuários a fazerem upload em lote.
O interessante é que o usuário seleciona informações básicas dos documentos no próprio painel (vídeo acima) e o mesmo já faz upload organizando os arquivos dentro das pastas certas, adicionando os respectivos metadados para indexação.
Mas para fazer isso em uma página pública @Wasley_Santos (pelo que entendi da sua necessidade), daí precisa adicionar segurança … pois não seria interessante fazer as chamadas do frontend diretamente para as APIs do Fluig … você teria que criar um backend pra isso (internamente no Fluig via Java ou externamente com a linguagem que você preferir)
Prezados, boa tarde!
@Fluigor e @helbert_campos estou com a mesma dúvida do amigo aí em cima, preciso fazer o upload de arquivos de um input file mas estou com dificuldade.
Tenho um campo input file dentro de uma tabela pai filho
<input type="file" class="form-control" name="tb_anexos_sol_arq" id="tb_anexos_sol_arq" onchange="setFileProperties(this)" />
E tenho a seguinte function:
function setFileProperties(fileField) {
let fileName = fileField.files[0].name;
let fileExtension = fileName.split(".");
let date = new Date();
let dateBrTimeZone = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);
let dateString = dateBrTimeZone.toISOString().slice(0,23).replace(/[^0-9]+/g,"");
let newFileName = dateString + "." + fileExtension[1];
let fieldName = fileField.name.split("___");
var formData = new FormData();
formData.append('file', fileField.files[0]);
$.ajax({
method: 'POST',
url: '/ecm/upload',
data: {
userId: '101614',
uploadWithTimeStamp: true,
body: formData
},
processData: false,
success: function(data) {
alert(data);
},
error: function(err) {
alert("ERRO: Tente novamente mais tarde. ");
console.log(err);
}
})