最近做的一个系统中,对于上传到服务器的图片被保存到服务器端内部其余的计算机上,而且这些机子对公网来说是不透明的,所以在图片取得时候做了一个小转换.
1)问题:将图片上传到服务器端,服务器端在取到图片之后,按照配置中指定的内网服务器地址保存到对应的共享目录中,(这台机子不具备有共网IP).这样就造成如果直接从外网访问共网内部的机子,将取不到图片.
2)解决思路:
2.1)其实问题和将图片保存到数据库中的处理方式是一样的,只是区别于一个在数据库中,一个在其他计算机上.
2.2)对于将图片保存到数据库的处理网上有很多处理方式,大家可以借鉴一下,这里主要将取得图片的处理方式
给出,
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;
}
}
{
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中处理,地址可以被保存在数据库中,
也可以是直接传内网地址的方式.主要看具体的要求.解决办法也比较简单.