JCLopes Posted February 19, 2014 at 01:25 PM Report #545790 Posted February 19, 2014 at 01:25 PM Boas Estou com um problema. Tenho uma aplicação web numa intranet a corre no iis7. Necessito que a aplicação abra imagens que estão numa pasta partilhada noutro servidor. A aplicação grava as imagens nessa pasta normalmente mas não as consegue mostrar. Tudo corre bem ma máquina de desenvolvimento mas quando publico no iis deixo de conseguir visualizar as imagens. Obrigado
nelsonr Posted February 19, 2014 at 02:39 PM Report #545795 Posted February 19, 2014 at 02:39 PM Estás a tentar visualizar a imagem com que endereço? A melhor forma talvez seja leres a imagem para um byte[] e usares o Response.BinaryWrite juntamente com o Response.ContentType, para enviares a imagem para o browser
JCLopes Posted February 19, 2014 at 02:45 PM Author Report #545796 Posted February 19, 2014 at 02:45 PM Estou a tentar visualizar a imagem com o visualizador de imagens do windows ou com o programa que estiver definido para abrir o tipo de imagem. Tudo finciona bem, para a mesma pasta, excepto quando publico no iis.
nelsonr Posted February 19, 2014 at 03:09 PM Report #545798 Posted February 19, 2014 at 03:09 PM Não foi isso que perguntei, mas deixa estar. Uma possível solução será o que coloquei no post anterior
JCLopes Posted February 19, 2014 at 03:35 PM Author Report #545802 Posted February 19, 2014 at 03:35 PM (edited) OK. Mas não quero mostrar a imagem no browser. A situação é a seguinte: A imagem é gravada numa pasta no servidor, que pode ser o mesmo do IIS ou não mas em princíio não, e o caminho é gravado numa tabela do MYSQL, caminho completo incluindo nome da imagem. O caminho até à pasta está previamente definito num campo de uma tabela e é carregado na altura numa session. Só mudam os nomes das imagens. Quando necessito de ver a imagem, clico numa gride que contem todas as imagens referentes ao mesmo assunto, obtenho o nome da magem e o resto do processo é mesmo. Como já disse, tudo funciona bem até publicar no iis. De referir que não há qualquer problema ao gravar, apenas a visualizar. Edited February 19, 2014 at 03:37 PM by JCLopes
nelsonr Posted February 19, 2014 at 03:51 PM Report #545807 Posted February 19, 2014 at 03:51 PM Quando necessito de ver a imagem Como estás a fazer isto? É com o img ? O que é que colocas no src?
JCLopes Posted February 19, 2014 at 04:33 PM Author Report #545824 Posted February 19, 2014 at 04:33 PM System.Diagnostics.Process.Start("explorer.exe", sPath); Não é com o img. A app fornece o caminho (sPath) até á imagem (o caminho é guardado numa BD) Não consegui recuperar imagens com o img que não viessem da pasta Images da app.
nelsonr Posted February 19, 2014 at 04:49 PM Report #545828 Posted February 19, 2014 at 04:49 PM O process.start está a ser feito no servidor, nunca vai fazer nada no cliente. O que pretendes é abrir uma página nova com a imagem, correcto? Para abrir uma janela nova, terás de usar javascript. Exemplo: Response.Write("<script>window.open('endereço da imagem', '_blank')</script>") Agora a parte do endereço da imagem. Podes copiar a imagem para uma pasta dentro da estrutura do site, e naquele endereço usas algo do tipo 'imagens/imagem.jpg' Se não quiseres copiar, crias uma página que vai servir para mostrar a imagem (showimage.aspx). No page_load desta página, lês o ficheiro da imagem para um byte[] (exemplo: http://msdn.microsoft.com/en-us/library/system.io.file.readallbytes%28v=vs.110%29.aspx) e usas o Response.BinaryWrite como indiquei anteriormente para enviar a imagem para o browser
JCLopes Posted February 19, 2014 at 04:59 PM Author Report #545830 Posted February 19, 2014 at 04:59 PM Então mas porque é que funciona em modo de desenvolvimento, precisamente para a mesma pasta?
nelsonr Posted February 19, 2014 at 05:11 PM Report #545833 Posted February 19, 2014 at 05:11 PM O caminho que estás a usar ali com sPath deve ser do tipo \\servidorxpto\pasta\imagem.jpg, correcto? Se abrires um browser na mesma rede do servidor e colocares o caminho, vai mostrar a imagem. Se eu abrir aqui um browser e colocar esse caminho, o que achas que mostra? Tens de perceber a diferença entre o que é o servidor e o que é o cliente Quando executas o process.start, estás a executar do lado do servidor. Só ves alguma coisa se tiveres tudo na mesma maquina
JCLopes Posted February 19, 2014 at 05:29 PM Author Report #545838 Posted February 19, 2014 at 05:29 PM Mas os clientes e o servidor estão na mesma rede. Uma intranet que não sai do mesmo local físico, nem sequer tem acesso à internet. Até o switch no bastidor é o mesmo. A pasta com as imagens está no mesmo servidor que o iis. Na minha máquina via Visual Studio a coisa funciona e estamos a falar da mesma pasta que contém as imagens, via iis não mosta. No localhost no próprio servidor também não funciona.
nelsonr Posted February 19, 2014 at 05:39 PM Report #545842 Posted February 19, 2014 at 05:39 PM Provavelmente diferença no utilizador que executa a aplicação. Pelo IIS não deve ter acesso
JCLopes Posted February 23, 2014 at 05:19 PM Author Report #546385 Posted February 23, 2014 at 05:19 PM nelsonr Já descobri o problema. A pasta onde estão as imagens, não sendo a pasta Images da webapplication, tem que ser adicionada no iis, ao site respectivo. Obrigado na mesma por teres tentado ajudar.
afabranco Posted February 27, 2014 at 10:10 AM Report #546827 Posted February 27, 2014 at 10:10 AM boas já viste as permissões da pasta? Como estas a desenvolver deves ter o teu user com privilégios sobre a pasta, quando abres pelo browser não é o teu utilizador que está invocar as imagens mas sim o user do IIS. tens duas opções ou dás privilégios a "todos" para Ler os ficheiros ou mudas as imagens para o servidor do IIS e podes dizer que o user do IIS tem privilégios sobre essa pasta
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now