Subir arquivo para o GED via API

Há alguma maneira de subir um arquivo para o GED usando a API REST do Fluig?

1 curtida

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)	
						})
					}

'
1 curtida

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>
                                `)
                            }
2 curtidas

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: https://youtu.be/HNDl6FALD9s

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);

        }

    })