Inquiridor
Upload de Arquivo e usar do Servidor

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.
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
-
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.
-
-
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..