asp.net 使用a 标签下载 url 文件

js 代码

    var a = document.createElement('a');
     a.setAttribute('href', url);
     a.download = "BillingCn_" + makeBillNo + ".pdf";
     a.click();
     a.remove();

注意点:

 url:为虚拟路径,如果是后台返回http 地址,如:localhost:8888/demo.pdf,则需要后台将文件下载到本站,否则前台会直接打开文件而不是弹出下载。

以asp.net aspx 下载pdf 文件为例

代码如下:

后台c# 代码:

 /// <summary>
        /// 删除空运账单
        /// </summary>
        /// <param name="billNo"></param>
        /// <returns></returns>
        [WebMethod]

        public  static string MakingBillExportEn(string tdata)
        {

            LayuiResponseBySingle<string> layuiBase = new LayuiResponseBySingle<string>();

            BaseClientHelper basicsClient = new BaseClientHelper(ConfigurationManager.AppSettings["TransitTradeBehand"]);
            IDictionary<string, string> headerObj = new Dictionary<string, string>();
            headerObj.Add("X-USER-LOGINNAME", CookieHelper.GetValue("UserName"));

            CreateAirBill paramObj = JsonConvert.DeserializeObject<CreateAirBill>(tdata);
           
            BaseResponse<string> airBillCnResponse = basicsClient.ExecutePostSingle<string>("/api/Bill/MakingBillExportEnBySingle", paramObj, headerObj);
            if (airBillCnResponse.IsOK && airBillCnResponse.Results != null)
            {

                layuiBase.code = 0;
                layuiBase.data = basicsClient.Client.BaseUrl+airBillCnResponse.Results;
                layuiBase.msg = airBillCnResponse.Message;
                byte[] bytes = PdfHelper.GetByteByRemoteURL(layuiBase.data);
                string SavePath = System.Web.HttpContext.Current.Server.MapPath("~/Upload/BillExport/");
                if (!Directory.Exists(SavePath))

                {

                    Directory.CreateDirectory(SavePath);

                }
                string SaveName = Guid.NewGuid().ToString() + ".pdf";
                string path = SavePath + SaveName;
                FileStream fs = new FileStream(path, FileMode.Create);//创建一个文件流
                fs.Write(bytes, 0, bytes.Length);//将byte数组写入文件中
                fs.Close();//所有流类型都要关闭流,否则会出现内存泄露问题
                layuiBase.data = "/Upload/BillExport/" + SaveName;
                return JsonConvert.SerializeObject(layuiBase);
              
            }
            else
            {
                layuiBase.code = 0;
                layuiBase.data = "";
                layuiBase.msg = airBillCnResponse.Message;

                return JsonConvert.SerializeObject(layuiBase);

            }

        }

前台js方法:

$("#exportCn").on('click', function () {

var checkStatus = table.checkStatus('table-list');
var checkData = checkStatus.data;

var WaybillNO = $("#hidWaybillNo").val();
var makeBillNo = $("#MakeBillNo").find("option:selected").text();
var reqdata = {};
reqdata.BillNo = makeBillNo;
reqdata.OrderNO = WaybillNO;
if (makeBillNo.length <= 0) {

layer.msg("请选账单");
return false;
}

$.ajax({
cache: false,
async: false,
type: 'POST',
contentType: "application/json; charset=utf-8",
dataType: "json",
url: '/Tranadmin/ManaWayBill/NewAir/ExportMakeBill.aspx?WBNo=' + WaybillNO + '&&BillNo=' + makeBillNo + '&&Origin=2',
success: function (res) {


var data = res.data;
var url = data;

var a = document.createElement('a');
a.setAttribute('href', url);
a.download = "BillingCn_" + makeBillNo + ".pdf";
a.click();
a.remove();

 

 

}

})
return false;
});

 

posted @ 2021-07-22 11:07  近墨者黑,近我者甜  阅读(296)  评论(0编辑  收藏  举报