小余

灵感源于交流,创新出自思考

导航

服务器内部分布式图片取得

Posted on 2008-04-17 12:48  小余(Yice)  阅读(774)  评论(0编辑  收藏  举报
最近做的一个系统中,对于上传到服务器的图片被保存到服务器端内部其余的计算机上,而且这些机子对公网来说是不透明的,所以在图片取得时候做了一个小转换.
1)问题:将图片上传到服务器端,服务器端在取到图片之后,按照配置中指定的内网服务器地址保存到对应的共享目录中,(这台机子不具备有共网IP).这样就造成如果直接从外网访问共网内部的机子,将取不到图片.
2)解决思路:
  2.1)其实问题和将图片保存到数据库中的处理方式是一样的,只是区别于一个在数据库中,一个在其他计算机上.
  2.2)对于将图片保存到数据库的处理网上有很多处理方式,大家可以借鉴一下,这里主要将取得图片的处理方式
       给出,
public partial class pages_Common_GetImage : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
string strImageFile = Request.QueryString["ImgUrl"== null ? string.Empty : Request.QueryString["ImgUrl"].ToString();
        
if (strImageFile.Equals(string.Empty))
            
return;
        GetImage(FormatImageFile(strImageFile));
    }


    
private void GetImage(string strPath)
    
{
        
if (! System.IO.File.Exists(strPath))
            
return;        
        System.Drawing.Image img 
= System.Drawing.Image.FromFile(strPath);
        Response.ContentType 
= "image/Jpeg";        
        img.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);        
        Response.End();
    }

    
private string  FormatImageFile(string strPath)
    
{
        
return strPath;
    }

}

对于具体的地址转换可以在FormatImageFile中处理,地址可以被保存在数据库中,
也可以是直接传内网地址的方式.主要看具体的要求.解决办法也比较简单.