Acessar arquivo fora da estrutura Web

19/03/2012

0


Estou tentando acessar arquivo fora da estrutura Web e não consigo.
Para ativar o site, montei o diretório virtual assim: C:\NETNUCLEO\EFIGIE\LOGIN.ASPX
Dentro dessa estrutura eu consigo acessar qualquer arquivo, por exemplo um de imagem FOTO01.JPG.
Como estou montando sistema para acessar um banco gigante (2TB) de imagnes, os arquivos terão que ficar fora da estrutura raiz/padrão do sistema.
Como exemplo, esses ficarão em outro HD, ou seja, no diretório H:\FOTOS\FOTOS01.JPG
Mas quando tento acessar/mostrar esta imagem e colocar a propriedade ImageUrl = H:\FOTOS\FOTOS01.JPG simplesmente não mostra nada.

Existe alguma forma de acessar arquivos fora da estrutura padrão?

Osvaldo Júnior

Osvaldo Júnior

Responder

Posts

19/03/2012

Joel Rodrigues

Tente usar o Server.MapPah(caminho).
Responder

19/03/2012

Osvaldo Júnior

O Server.MapPah() só enxerga dentro da pasta raiz.
Responder

19/03/2012

Joel Rodrigues

É verdade, entendi mal o seu problema. Vou tentar buscar uma solução por aqui.
Responder

19/03/2012

Joel Rodrigues

É verdade, entendi mal o seu problema. Vou tentar buscar uma solução por aqui.
Responder

21/04/2012

Osvaldo Júnior

Consegui a solução em outro forum.

Autor: Rafael Cardoso (http://csharpbrasil.com.br/forum/asp-net/acessar-arquivoimagem-fora-da-estrutura-web/)

Para exibir você precisará fazer o seguinte. Primeiro crie um novo arquivo do tipo Generic Handler (extensão .ashx) e copie e cole o codigo abaixo.

<%@ WebHandler Language=C# class=exibi_imagem %>
using System;
using System.Web;
using System.IO;
public class exibi_imagem : IHttpHandler
{
private const string diretorioImagens = @H:\FOTOS\;

public void ProcessRequest (HttpContext context) {
string arquivo = context.Request.QueryString[arquivo];
string caminho = Path.Combine(diretorioImagens, arquivo);
System.Drawing.Image imagem = System.Drawing.Bitmap.FromFile(caminho);
System.IO.MemoryStream ms = new System.IO.MemoryStream();
imagem.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
context.Response.BinaryWrite(ms.ToArray());
}

public bool IsReusable
{
get
{
return false;
}
}
}

O que ocorre nesse código é o seguinte. Uma QueryString chamada arquivo será passada para o arquivo. Dentro do arquivo temos uma constante apontando o diretorio das imagens. Concatenaremos ele ao nome do arquivo e abriremos a imagem para escrever no browser.
No seu codigo html utilizará assim:

<asp:Image ID=Image1 runat=server ImageUrl=exibi_imagem.ashx?arquivo=fotos01.jpg />


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar