+5 votos
222 visitas

Estou desenvolvendo uma aplicação web, e necessito salvar arquivos no campo tipo arquivo.
oque estou fazendo é converter o arquivo selecionado para base64 e enviando o código para minha api c#, convertendo esse código em byte,
e salvando no campo.

Esta criando o registro no banco porem ao tentar abrir o documento através do sistema benner rh, esta apresentando um erro, dizendo que arquivo não foi encontrado.

Abaixo esta uma pagina simples apenas com a rotina de salvar o arquivo no banco, e gostaria de um auxilio sobre oque pode estar errado, e qual seria a melhor maneira de fazer isso.

 

<html>
<head>

</head>

<body>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

<input type="file" id="carrega_arquivo" />

<button onclick="salvar()"> salvar</button>

</body>

<script>
    novo()
    function novo(){

    File.prototype.convertToBase64 = function(){
        return new Promise(function(resolve, reject) {
            var reader = new FileReader();
            reader.onloadend = function (e) {
                resolve({
                    fileName: this.name,
                    result: e.target.result,
                    error: e.target.error
                });
            };   
            reader.readAsDataURL(this);
    }.bind(this));
    };     

    $("#carrega_arquivo").on('change',function(){
    var selectedFile = this.files[0];
    selectedFile.convertToBase64().
        then(function(obj){
            arquivobase64 = obj.result
            encoded = obj.result.toString().replace(/^data:(.*,)?/, '');
            if ((encoded.length % 4) > 0) {
            encoded += '='.repeat(4 - (encoded.length % 4));  
            }
        });
    });

    }

    async function salvar(){
    var request = {
        "NOME": "nome arquivo",
        "ARQUIVO": encoded
        }
        var resp_salva_arquivos = await axios.post("http://10.1.1.17/DEMO_RH_PROD/api/cadcurriculo/novo_arquivo?CANDIDATO=123" + "&TIPOARQUIVO=2", data=request);
    }

</script>

</html>





 

código c#

   

 public class Model_arquivo_novo
    {
       public string NOME {get;set;}
       public string ARQUIVO {get;set;}
    }

    
    [Route("novo_arquivo")]
    [HttpPost]
    public IHttpActionResult novo_arquivo(Model_arquivo_novo request, String CANDIDATO, String TIPOARQUIVO)
    {
        try
        {
            RS_CURRICULODOCUMENTOS entidade = RS_CURRICULODOCUMENTOS.Create();

            byte[] decodedBytes_arquivo = Convert.FromBase64String(request.ARQUIVO);

            entidade["TIPOARQUIVO"].SetString(TIPOARQUIVO);

            entidade.Fields["ANEXO"] = new FileField(new MemoryStream(decodedBytes_arquivo), "teste.docx");

            entidade.Fields["NOME"] = request.NOME;

            entidade["CANDIDATO"].SetString(CANDIDATO);

            entidade.Save();
            return Ok(decodedBytes_arquivo.Length);
        }
        catch (Exception ex)
        {
            return Ok(ex.Message);
        }
    }

 

fechada com o comentário: Falta de respostas do autor.
por (148 pontos)
republicada por | 222 visitas
Parece que está tudo certo. Você tem algum log do erro "Registro não encontrado"?
Ocorre algum erro ao executar o código abaixo

public IHttpActionResult novo_arquivo(Model_arquivo_novo request, String CANDIDATO, String TIPOARQUIVO) {
....
entidade.Save(); /// ???
....

}

Perguntas relacionadas

Melhores Aug 2025
    200 pontos
    Melhores 2025 Jul 28 - Aug 03
    1. Larson

      156 Pontos

    2. danilo.pereira

      96 Pontos

    3. danilo.pereira

      96 Pontos

    4. danilo.pereira

      96 Pontos

    5. luciano.fronza

      61 Pontos

    6. luciano.fronza

      61 Pontos

    7. luciano.fronza

      61 Pontos

    8. diuari.molinari

      52 Pontos

    9. diuari.molinari

      51 Pontos

    10. diuari.molinari

      51 Pontos

    517 perguntas
    566 respostas
    389 comentários
    704 usuários