基本没辙,图片统一放在一个站点上好了
webform调用的图片必须发布出来
把图片统一放到一个FTP上算了!
winform这个项目下的图片文件夹放到webform的虚拟目录下
放到一个公用的站点上...提供其他项目共同调用....
可以利用 本地访问的方式,以流的方式输出 到WebForm上。
在什么情况下有这个需求呢?
如果必须这样,其实楼上的几位已经提供了解决方案
1、winform这个项目下的图片文件夹放到webform的虚拟目录下
这样需要winform和webform二套系统必须放在同一个server下,或者通过UNC之类的方法部署在不同的server上
2、图片在webform内,然后winform通过访问指定图片的路径,得到图片流,在winform系统内转换为图片显示
你的需求是 webform 要用非web目录下的图片对吗?
如果是的话,这样解决:
写一个 getimage.ashx , 用传入的图片名去读取图片文件,然后用 Response 写给客户端。比如你的图片在 D:\WB\Images, webform 的主目录在别的任意地方。
以下为 getImage.ashx 的代码,把它放到webform根目录下:
<%@ WebHandler Language="C#" class="ImageLoader" %>
using System;
using System.IO;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
public class ImageLoader : IHttpHandler
{
protected HttpContext Context = null;
protected HttpRequest Request = null;
protected HttpResponse Response = null;
public void ProcessRequest(HttpContext context)
{
Context = context;
Request = context.Request ;
Response = context.Response ;
Response.ContentType = "image/gif"; //这里根据你得图片的类型修改
string PhysicalFilePath = @"D:\WB\images\"; //这里改成你实际的路径,也可以存在web.config里面,用的时候去读
string PhysicalFileName = PhysicalFilePath + Request.QueryString["fn"] + ".gif" ; //扩展名也可以在QueryString里面直接传递
string sHeader = string.Format("attachment;filename={0}", Request.QueryString["fn"]);
Response.ClearHeaders();
Response.AppendHeader("Content-disposition", sHeader);
if (!File.Exists(PhysicalFileName)) Response.End();
else WriteFile(PhysicalFileName);
}
protected void WriteFile(string PhysicalFileName)
{
FileStream fsin = new FileStream(PhysicalFileName, FileMode.Open, FileAccess.Read);
long FileSize = fsin.Length;
byte[] Buffer = new byte[(int)FileSize];
fsin.Read(Buffer, 0, (int)FileSize);
fsin.Close();
Response.BinaryWrite(Buffer);
}
public bool IsReusable
{
get
{
return false;
}
}
}
在 webform 里面要用这个图片,比如用 D:\WB\Images\logo.gif, 只要写
<img src="getImage.ashx?fn=logo" />
就可以了。