zoukankan
html css js c++ java
生成PDF下载 HTTP或FTP远程获取PDF
这个只是些代码片断。 备用。希望也能对大家有用。
down.ashx.cs
public
void
ProcessRequest(HttpContext context)
{
string
title
=
sui.Title;
string
su
=
sui.SourceUrl;
//
全文下载链接地址
context.Response.Clear();
context.Response.ContentType
=
"
application/pdf
"
;
context.Response.ContentEncoding
=
Encoding.UTF8;
context.Response.Charset
=
"
utf-8
"
;
context.Response.AddHeader(
"
Content-Disposition
"
,
"
attachment; filename=
"
+
HttpUtility.UrlEncode(title
+
"
.pdf
"
,Encoding.UTF8));
if
(su.Contains(
"
ftp
"
))
{
string
userName
=
""
;
string
password
=
""
;
FtpDownload(context, su, userName, password);
}
else
{
HttpDownload(context, su);
}
}
private
static
void
FtpDownload(HttpContext context,
string
fileUrl,
string
userName,
string
password)
{
try
{
byte
[] result;
byte
[] buffer
=
new
byte
[
4096
];
Uri filepath
=
new
Uri(fileUrl);
FtpWebRequest reqFTP
=
(FtpWebRequest)FtpWebRequest.Create(filepath);
reqFTP.Method
=
WebRequestMethods.Ftp.DownloadFile;
reqFTP.UseBinary
=
true
;
reqFTP.Credentials
=
new
NetworkCredential(userName, password);
using
(FtpWebResponse response
=
(FtpWebResponse)reqFTP.GetResponse())
{
using
(Stream responseStream
=
response.GetResponseStream())
{
using
(MemoryStream memoryStream
=
new
MemoryStream())
{
int
count
=
0
;
do
{
count
=
responseStream.Read(buffer,
0
, buffer.Length);
memoryStream.Write(buffer,
0
, count);
}
while
(count
!=
0
);
result
=
memoryStream.ToArray();
HttpContext.Current.Response.AddHeader(
"
Content-Length
"
, result.Length.ToString());
memoryStream.WriteTo(context.Response.OutputStream);
memoryStream.Close();
context.Response.OutputStream.Flush();
context.Response.Flush();
}
}
}
}
catch
(Exception ex)
{
Exceptions.LogException(ex);
}
}
private
static
void
HttpDownload(HttpContext context,
string
httpUrl)
{
try
{
byte
[] buffer
=
new
byte
[
4096
];
HttpWebRequest reqHTTP
=
(HttpWebRequest)WebRequest.Create(httpUrl);
using
(HttpWebResponse response
=
(HttpWebResponse)reqHTTP.GetResponse())
{
using
(Stream responseStream
=
response.GetResponseStream())
{
using
(MemoryStream memoryStream
=
new
MemoryStream())
{
int
count
=
0
;
do
{
count
=
responseStream.Read(buffer,
0
, buffer.Length);
memoryStream.Write(buffer,
0
, count);
}
while
(count
!=
0
);
byte
[] result
=
memoryStream.ToArray();
HttpContext.Current.Response.AddHeader(
"
Content-Length
"
, result.Length.ToString());
memoryStream.WriteTo(context.Response.OutputStream);
memoryStream.Close();
context.Response.OutputStream.Flush();
context.Response.Flush();
}
}
}
}
catch
(Exception ex)
{
Exceptions.LogException(ex);
}
}
查看全文
相关阅读:
vagrant使用
商品分类
猜你喜欢
[NOIP2012]开车旅行
bzoj 1029: [JSOI2007]建筑抢修
bzoj 2127: happiness
bzoj 2561: 最小生成树
bzoj 3331: [BeiJing2013]压力
数组中简便方法求最大值,最小值,平均值,求和,和个数
#include 和 #import 的区别, @class 的含义
原文地址:https://www.cnblogs.com/ajaxleoxu/p/1089996.html
最新文章
DropDownList 控件
jQuery的收尾
Jquery进阶
jquery初识
JS进阶1
JS进阶
Dom对象
js对象属性与Bom
css进阶
pymysql
热门文章
mysql之4;
(二)用户相关操作
工具类解释
(一)实体关系分析
eclipse与maven配置
eclipse配置环境基本设置
eclipse整合tomcat
遗传算法求解TSP问题
快速排序
SSH免密登陆
Copyright © 2011-2022 走看看