本篇详解如何跨项目去文件。主要是因为我们经常在后台添加资源,我们需要在前台的项目中访问添加的资源,这样的问题就会有。
下面的列子是测试图片,换成其他的文件都可以。
①先看看我们在一个项目中如何取吧
在项目一中,我新建了文件夹,存了一张图
页面上放了两个图片标签
取路径的两种方式都写了, 取服务器路径,取本地路径。
string path = ""; path = Server.MapPath("~/img/1.png");//这里给的服务器的路径,返回的是物理路径 格式为下面的字符串格式 //D:\VS2015NewProject\WebApplication1\WebApplication1\img\1.png imgPath = path; Response.Write(path); //返回在页面上就是单个斜杠了 Image1.ImageUrl = "~/img/1.png"; //直接服务器的路径
经测试有一张图片显示不了,这并不是我们的路径所致,把上面的字符串放在地址栏,回车会显示出图片。虽然显示不了,当我们确实是取到图片的路径了。
跨项目取资源
接着我新建了一个项目
我们在这个项目里面取上个项目里面的图片
也是两种可以去到资源,一种也是通过本地路径也就是磁盘路径,还有一种直接方法带域名的地址
string aa = ConfigurationManager.AppSettings["WebUrl"].ToString(); //第一种,域名访问 string bb = ConfigurationManager.AppSettings["LocalPath"].ToString(); //第二种,磁盘访问 //bb D:\VS2015NewProject\WebApplication1\WebApplication1 Response.Write("aa:"+aa+"<br>"); Response.Write("bb:"+bb+"<br>"); string path = "/img/1.png"; Image1.ImageUrl =aa+path; Image2.ImageUrl = bb + path.Replace("/", "\"); //格式为 C:\A\B\C\XX.doc(等其他文件) 或者@C:Acxx.doc
配置文件
<appSettings> <!-- 这个设置的是本地的,网站上线了是一个样,对于一些隐晦的信息我们可以利用.config来帮我们保存--> <add key="WebUrl" value="http://localhost:25909"/> <!--利用域名来访问,上线了这里就是你网站的域名--> <add key="LocalPath" value="D:VS2015NewProjectWebApplication1WebApplication1"/> <!-- 在本地上访问,上线了 这里的路径就是你服务器上发布网站文件夹的路径--> </appSettings>
下载:查看下载,下载单个Word就是给路径就可以了,下在图片就需要用Response来下载。 如果我们跨域下载,就找到图片的本地路径。就可以了。
在一般处理程序中下载
问题是这样的,我现在一般处理程序里面获取数据,然后返回,当我点击下载,还是继续访问这个一般处理程序,不管怎么样都下载不了,后来把下载图片单独做一个一般处理程序就好了。
单独写一个下载,把之前的代码移到一个单独的处理程序就好了。
代码没变,这样就可以了
context.Response.ContentType = "text/plain"; string filePath = context.Request.QueryString["fileName"]; try { //图片下载给本地路径 WebUrl string webPath = ConfigurationManager.AppSettings["LocalPath"]; string uploadPath = webPath + filePath.Replace("/", "\"); uploadPath = uploadPath.Replace(@"\", @""); System.IO.FileInfo DownloadFile = new System.IO.FileInfo(uploadPath); if (DownloadFile.Exists) { context.Response.Clear(); context.Response.ClearHeaders(); context.Response.Buffer = false; context.Response.ContentType = "application/octet-stream"; context.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.ASCII)); context.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString()); context.Response.WriteFile(DownloadFile.FullName); context.Response.Flush(); context.Response.End(); } else { //文件不存在 } } catch (Exception me) { string ms = me.Message; //文件不存在 }
上传: 把一个文件上传到另一个项目中保存。
利用本地路径保存文件就可以了
C:aabccxx.xx 格式