none
Upload de Arquivo e usar do Servidor RRS feed

  • Pergunta

  • Boa noite amigo,

    Estou precisando usar um arquivo que estou fazendo upload. 

    A ideia é simples. Passo um arquivo de excel na página, salvo no servidor  e depois execute um procedimento que pegue esse arquivo e converter em xml.

    O sistema roda localmente, mas no servidor da pau, acredito que seja porque, logo depois de salvar já mando usar o arquivo, ai acho que nao encontrou...

    Veja o codigo.

        private void  saveArquivo()
            {
             
                if (arquivoSalvo != null && arquivoSalvo.ContentLength > 0)
                {
                    var filename = Path.GetFileName(arquivoSalvo.FileName);
                    this.path = Path.Combine(Server.MapPath("~/UploadFiles/temp/"), filename);
                    arquivoSalvo.SaveAs(this.path);
                }

              
            }

    metodo que chama 

          Thread salvandoArquivo = new Thread(saveArquivo);
                salvandoArquivo.Start();
                salvandoArquivo.Join();

    Fiz a thread para tentar segurar, mas nada.

    quarta-feira, 1 de março de 2017 23:58

Todas as Respostas

  • Olá! Qual erro ocorre ao executar no servidor de produção? Logo após arquivoSalvo.SaveAs(this.path) você já poderia chamar a leitura do arquivo conforme código abaixo. O diretório "~/UploadFile/temp/" possui permissão de escrita?

    if (arquivoSalvo != null && arquivoSalvo.ContentLength > 0)
                {
                    var filename = Path.GetFileName(arquivoSalvo.FileName);
                    this.path = Path.Combine(Server.MapPath("~/UploadFiles/temp/"), filename);
                    arquivoSalvo.SaveAs(this.path);
    
    
                 // fazer a leitura de this.path 
    
                }


    João Paulo Gomes

    quinta-feira, 2 de março de 2017 00:29
  • oi João,

    então..

    Coloquei o codigo a seguir depois de salvar:

         string xml = exportador.exportar(path);

    essa linha que irá pegar o arquivo em excel..no visual studio na compilção roda normalmente, mas no servidor dá o erro

         string xml = exportador.exportar(path);

    Referência de objeto não definida para uma instância de um objeto.

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.

    quinta-feira, 2 de março de 2017 01:07
  • Esse problema acontece quando você tenta chamar um método ou propriedade de um objeto que não foi instanciado. Veja se consegue extrair mais detalhes desse erro, como o número da linha que está acontecendo.

    João Paulo Gomes

    quinta-feira, 2 de março de 2017 01:59
  • oi, 

    na verdade descobrir que era o uso da API microsoft.excel.interop.

    Mudei a forma de chamar o excel, no entanto agora da erro de Microsoft.ACE.OLEDB.12.0' não está registrado na máquina local

                    OleDbConnection conexao = new OleDbConnection(string.Format(@"Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0}; Extended Properties ='Excel 12.0 Xml; HDR = YES';",arquivo));

                    OleDbDataAdapter adapter = new OleDbDataAdapter("select * from[principal$]", conexao);
                    DataSet ds = new DataSet();

                    Aliquota obj = null;
                    List<Aliquota> lista = new List<Aliquota>();

                    try
                    {
                        int i = 0;                 
                        conexao.Open();   //erro aqui
                        adapter.Fill(ds);

                  }   

                  cacth{}

    Ja instalei o AccessDatabaseEngine, no visual studio compilando roda normal, agora no IIS da propria maquina da esse erro..

    quinta-feira, 2 de março de 2017 05:52