C#根据path文件地址进行下载

1:在js文件中写入加密方法

var Comm = {
    encode: function (text) {
        if (text)
            return new Base64().encode(text);
        else
            return text;
    }

}

2:Handler类中返回文件地址:

如:string path = "/Files/审理意见书.doc";

3:在js方法中接收并跳转页面进行下载

function Download(){
      $.post(‘ ‘,{action:‘ ‘},function(data){

    if(path!=""){

      window.location.href="/Download.aspx?P="+Comm.encode(path);

    }

  });
   }

4:在Download.aspx也进行后台代码操作

a:首先写入解密方法

 public  static string Decrypt(string text) {

  byte[] bytes = Convert.FromBase64String(text);

  return Encoding.UTF8.GetString(bytes);

}

b:进行文件解析以及下载操作

 protected void Page_Load(object sender, EventArgs e) {

    string path = Decrypt(Parse.ToString(Request["p"]).Replace(" ", "+"));

     string fileName = path.Substring(path.LastIndexOf(‘/‘) + 1);

     var filePath = HttpContext.Current.Server.MapPath(path);

     try {

        //判断是否存在此文件

        if (File.Exists(filePath)) {

          FileStream io = File.Open(filePath, FileMode.Open);

          long fileSize = io.Length;
                       byte[] filebit = new byte[(int) fileSize];
                         io.Read(filebit, 0, (int) fileSize);
                       Response.Clear();
                       fileName = HttpUtility.UrlEncode(fileName);
                       Response.ContentType = "application/octet-stream";
                       Response.AddHeader("Content-Disposition", "attachment;fileName=" + fileName);
                       Response.BinaryWrite(filebit);
                       io.Dispose();
                       Response.Flush();
                       Response.End();

        } else {
                        Response.Clear();
                        Response.Write("<script type=\"text/javascript\" src=\"/Scripts/jquery-1.10.2.js\"></script><script>$(function () {alert(‘文件不存在或已被删除‘, { icon: 0 }, function () { window.close(); }, function () { window.close(); });});</script>");
                }

     }catch (Exception ex) {
                Response.Clear();
                Response.Write("<script type=\"text/javascript\" src=\"/Scripts/jquery-1.10.2.js\"></script> <script>$(function () {alert(‘" + ex.Message + "‘, { icon: 0 }, function () { window.close(); }, function () { window.close(); });});</script>");
            }

}

时间: 2024-08-18 18:23:05

C#根据path文件地址进行下载的相关文章

.NetCore之下载文件

本篇将和大家分享的丝.NetCore下载文件,常见的下载有两种:A标签直接指向下载文件地址和post或get请求后台输出文件流的方式,本篇也将围绕这两种来分享:如果对您有好的帮助,请多多支持. 允许站点不识别content-type下载文件(即:不受mime类型限制下载) 如何允许下载.nupkg和.apk后缀的文件 Razor模板的post下载文件例子 半年来使用NetCore的一些感想和焦虑 允许站点不识别content-type下载文件(即:不受mime类型限制下载) 对于netcore的

读取Excel模板,程序填上相应的内容,再进行下载输出给客瞳

/// <summary> /// 技术变更打印模板 /// </summary> /// <param name="OrderID">订单主键</param> /// <returns></returns> [CheckPower(ISPower = false, Name = "缺件打印模板")] public IActionResult PrintOrderChanged_QueJain(

源代码的下载和编译

4.1下载编译和测试源代码 Android源代码由很多东西组成,一种是Android系统应用程序的代码,android SDK带的各种工具,android NDK的源代码,HAL源代码. 1.配置Android源代码下载环境 在下载Android源代码之前必须要在Linux终端执行一系列命令来配置下载环境. 第一步:创建一个用于存放下载脚本文件(repo)的目录 #  mkdir  ~/bin #  PATH=~/bin:$PATH 第二步:下载repo脚本文件 # curl https://d

Spring源码下载

Spring已经将源码从SVN迁移到了Github,而且也改为基于Gradle的构建来构建项目,它取代了之前的ANT+Ivy系统,所以要构建Spring源码要先安装Github和Gradle. 首先假设各位已经将成功的安装了Github和Gradle了. Gradle下载之后要进行环境变量的配置:类似JDK的配置,这里配置GRADLE_HOME和path. 下面就是下载源码,并编译成eclipse可以识别的工程的步骤. 1.首先打开Github,输入命令cd e://Spring,即定位源码下载

Ubuntu 下载 &amp; 编译 Android5.1 源码

转:http://www.cnblogs.com/bluestorm/p/4419135.html  1.安装openjdk-7-jdk Android 5.1 用到的jdk不再是Oracle 的 jdk ,而是开源的 openjdk,在ubuntu安装好后,使用如下命令安装jdk: $sudo apt-get install openjdk-7-jdk 安装好后,设置环境变量: 在/etc/profile 文件末尾加上: JAVA_HOME=/usr/lib/jvm/java-7-openjd

最新---java多线程下载文件

import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; public class Demo { // 定义线程个数 public static int threadCount = 5; public static void main(String[] args) throws Exception { // 1,连接到服务

多线程下载,以及断点的实现

import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; import java.net.URL; /** * 多线程下载,以及断点下载的实现<br> * 其中有个不好的地方,<br> * 就是进度文件的保存的时候如果采用RandomAccess

Android源码和内核源码的下载,编译和执行

笔者依据罗升阳老师的<Android 系统源码情景分析>一书,尝试下载,编译和执行Android源码和内核源码.但可能是软件源"被墙"或版本号更新的原因.期间遇到诸多问题.笔者求助于强大的度娘和谷歌.最终编译成功,现将改动的步骤记录例如以下: 一.下载相关的工具包和依赖包 1.git工具的下载.不多说 2.Java SDK的下载(參考网址:http://blog.csdn.net/zjclugger/article/details/11762085) 此处建议下载jdk1.

php远程下载文件

<?php /* 本源码来源于网络 http://user.qzone.qq.com/292672703 */ header("content-Type: text/html; charset=utf-8"); //定义编码 set_time_limit (0);//不限时 24 * 60 * 60 //语言包数组 $lang_cn = array ( '0' => '文件地址', '1' => '输入密码', '2' => '下载耗时', '3' =>