C#下载http/https的pdf、excel等文件(非在线打开,绕开插件)

非本服务器文件,如PDF,excel等,下载一般是通过href=‘远程文件的http或者https’的方式下载,但是如果浏览器已经有PDF插件了,则用href不是下载,而是在线打开了,影响体验,所以远程服务器文件下载改为后台的方式下载,可以绕开插件。代码如下:

string url = hidFilePath.Value;//文件的地址:如http://emec.h.c/pdf/test.pdf
string filename = hidFileName.Value;//导出的文件名称:如测试导出文件

//处理后缀
string[] _filename = url.Split(‘.‘);//得到文件后缀

long remoteFileLength = GetHttpLength(url);// 取得远程文件长度

if (remoteFileLength == 745 || remoteFileLength == 0)
{
Page.ClientScript.RegisterClientScriptBlock(GetType(), "js", "<script>alert(‘远程文件不存在‘);</script>");

return;
}

HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);// 打开网络连接

//发送请求并获取相应回应数据
HttpWebResponse response = myRequest.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才开始向目标网页发送Post请求 向服务器请求,获得服务器的回应数据流
Stream readStream = response.GetResponseStream();
readStream.Flush();

HttpContext curContext = HttpContext.Current;
curContext.Response.ContentType = "application/pdf";//设置类型
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "";
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(filename + "." + _filename[_filename.Length - 1], System.Text.Encoding.UTF8));

curContext.Response.AddHeader("Content-Length", remoteFileLength.ToString());
byte[] btArray = new byte[512];//一次最多读取不能超过1024  此处设512
byte[] _btArrary = new byte[remoteFileLength + 512];//防止溢出
int currPostion = 0;
int contentSize = readStream.Read(btArray, 0, btArray.Length);// 向远程文件读第一次
while (contentSize > 0)// 如果读取长度大于零则继续读
{
btArray.CopyTo(_btArrary, currPostion);
currPostion += contentSize;
contentSize = readStream.Read(btArray, 0, btArray.Length);// 继续向远程文件读取
}

curContext.Response.BinaryWrite(_btArrary);
curContext.Response.End();
readStream.Close();

// 从文件头得到远程文件的长度

private static long GetHttpLength(string url)

{
long length = 0;

try
{
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);// 打开网络连接
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();

if (rsp.StatusCode == HttpStatusCode.OK)
{
length = rsp.ContentLength;// 从文件头得到远程文件的长度
}

rsp.Close();
return length;
}
catch (Exception e)
{
return length;
}

}

原文地址:https://www.cnblogs.com/zhuangjolon/p/10195663.html

时间: 2024-08-27 02:35:33

C#下载http/https的pdf、excel等文件(非在线打开,绕开插件)的相关文章

JS-XLS/X读取和解析Excel表格文件(xls/xlsx)的JavaScript插件

最近有一个要求,我的一个项目中解析Excel文件(与xls/xlsx扩展)在浏览器(使用JavaScript当然).所以我在网上看了一下,发现了这2个有用的库: js-xls js-xlsx 让我们看看他们是如何工作的. 兼容性 支持读取文件格式 Excel 2007+ XML Formats (XLSX/XLSM) Excel 2007+ Binary Format (XLSB) Excel 2003-2004 XML Format (XML "SpreadsheetML") Exc

excel表格文件如何转为pdf

我们在日常编辑表格中,最擅长制作的应该是excel表格,但常常很多时候给别人发送excel文件的时候需要转换成pdf格式,这可以给人专业的感觉.但很多刚刚接触的朋友会有疑问,excel表格文件如何转为pdf?今天小编就来教下大家怎么将excel表格文件转为pdf?       其实excel表格文件转为pdf并不是什么难事.只要大家找对软件就不是困难了.下面是excel表格文件转为pdf的详细步骤,不会的跟着我一起操作吧! 1.打开浏览器进入百度首页,输入"迅捷PDF转换器",在显示的

Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)

http://www.cnblogs.com/gossip/p/3473024.html Asp.net实现直接在浏览器预览Word.Excel.PDF.Txt文件(附源码) 功能说明 输入文件路径,在浏览器输出文件预览信息,经测试360极速(Chrome).IE9/10.Firefox通过 分类文件及代码说明  DemoFiles 存放可测试文件 Default.aspx  启动页 ExcelPreview.cs  Excel预览类 public static void Priview(Sys

PDF→Excel格式转换工具集锦!

1. Free PDF to Excel Converter Free PDF to Excel Converter是一个把PDF文件转换为Excel格式的多功能免费程序.它支持批量处理,同时也支持XLSX和XLS以及CSV三种输出格式你可以在它的工具栏上点击"添加PDF文件"或者"添加文件夹"来转换PDF文件.添加文件之后点击转换按钮就开始处理程序了.你也可以只点击需要处理的页面,合并所有的PDF文件到一个Excel文件.它会试图保留格式,但可能不完全成功,但是所

PDF文件与EXCEL表格如何进行在线转换

PDF文件与EXCEL表格如何进行在线转换,PDF文件中的表格数字数据是可以复制出来的,但是还是有很多PDF文件中的表格是来自扫描或图片形式保存的,因此复制不出来,需要将PDF文件格式转换成EXCEL,那如何转换的呢,请看下面的操作.第一步.打开浏览器进入百度首页,搜索迅捷PDF在线转换器. 第二步.进入工具页首页后,在导航栏中找到文档转换.第三步.点击文档转换,在下拉框中选择PDF转Excel.第四步.点击选择文件,弹出文件框,将需要转换的PDF文件添加. 第五步.设置需要转换的格式页码等参数

下载根目录下的pdf文件, 浏览器下载

public void outPut(HttpServletRequest request, HttpServletResponse response, Integer type) { ClassPathResource classPathResource = new ClassPathResource("pdf/通知.pdf"); String filename = "通知.pdf"; BufferedInputStream bufferedInputStream

将List下载到本地保存为Excel

直接附上代码 1 /// <summary> 2 /// 将List保存为Excel 3 /// </summary> 4 /// <typeparam name="T">保存的类类型</typeparam> 5 /// <param name="lt">需要保存的源数据</param> 6 /// <param name="fileName">保存的文件名称&l

C#对word、excel、pdf等格式文件的操作总结 .

一.word 这是我以前工作时写过的一个业务逻辑处理类,里面有不少文件操作的方法,这里主要关注一下C#对word的操作.里面的方法可以直接拿出来用,主要是通过word的dot模版来进行创建word.替换word等操作. namespace Excel2Word { public class BLL { private Microsoft.Office.Interop.Word.Application app = null;//全局变量 word应用程序 /// /// 从Excel中读取数据 /

snml.exe为简单网络管理语言的解释执行器。本地打包下载:https://files.cnblogs.com/files/snmlsnmpsshtelnetipv6/snml_utf8ipv6.zip

本地打包下载:https://files.cnblogs.com/files/snmlsnmpsshtelnetipv6/snml_utf8ipv6.zip snml.exe为简单网络管理语言的解释执行器. 原文地址:https://www.cnblogs.com/snmlsnmpsshtelnetipv6/p/12381672.html