跨域取文件(跨项目)

本篇详解如何跨项目去文件。主要是因为我们经常在后台添加资源,我们需要在前台的项目中访问添加的资源,这样的问题就会有。

下面的列子是测试图片,换成其他的文件都可以。

①先看看我们在一个项目中如何取吧

在项目一中,我新建了文件夹,存了一张图

页面上放了两个图片标签

取路径的两种方式都写了,  取服务器路径,取本地路径。

  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:\A\b\c\xx.doc

配置文件

<appSettings> 
      <!-- 这个设置的是本地的,网站上线了是一个样,对于一些隐晦的信息我们可以利用.config来帮我们保存-->     
    <add key="WebUrl" value="http://localhost:25909"/> <!--利用域名来访问,上线了这里就是你网站的域名-->
    <add key="LocalPath" value="D:\VS2015NewProject\WebApplication1\WebApplication1"/>   <!--  在本地上访问,上线了 这里的路径就是你服务器上发布网站文件夹的路径-->
  </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:\aa\bb\cc\xx.xx  格式

 

posted @ 2017-08-10 16:58  Sealee  阅读(1092)  评论(0编辑  收藏  举报