+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
  1. RheaIoi8215

    5 Pontos

  2. RositaLansel

    5 Pontos

  3. MilesWeston

    5 Pontos

  4. RoseannViera

    5 Pontos

  5. DianaNickel

    5 Pontos

  6. KandiGower0

    5 Pontos

200 pontos
Melhores 2025 Aug 18 - 24
  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
710 usuários