本来有一个网页的小项目可以下载pdf文件,代码如下:
我设置了一个隐藏控件来放pdf文件名,还有两个button控件用来下载和显示
protected void ButtonDownload_Click(object sender, EventArgs e)
{
// 要下载的文件名,根据实际情况获取到这种形式
string filename = hidName.Value.ToString();
try
{
// 服务器文件路径
string strFilePath = Server.MapPath("~") + "/" + DOWNLOAD_DIRECTORY + filename;
FileInfo fileInfo = new FileInfo(strFilePath);
//以字符流的形式下载文件
FileStream fs = new FileStream(strFilePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
catch (System.Threading.ThreadAbortException ex)
{
}
catch (Exception ex)
{
}
}
在网页中也可以显示,代码:
protected void ButtonDetail_Click(object sender, EventArgs e)
{
// 要下载的文件名,根据实际情况获取到这种形式
string filename = hidName.Value.ToString();
Response.ContentType = "application/pdf";
byte[] ba = null;
// 服务器文件路径
string strFilePath = Server.MapPath("~") + "/" + DOWNLOAD_DIRECTORY + filename;
FileInfo fileInfo = new FileInfo(strFilePath);
//查看pdf
FileStream fs = new FileStream(strFilePath, FileMode.Open);
ba = new byte[fs.Length];
fs.Read(ba, 0, ba.Length);
fs.Close();
Response.HeaderEncoding = Encoding.UTF8;
Response.OutputStream.Write(ba, 0, ba.Length);
Response.End();
Response.Flush();
//Response.Redirect("report.aspx");
}
但是我发现放到手机端就不能用了,手机端怎么能实现下载显示pdf的?目前pdf是直接放在服务器的一个共享文件夹中。
手机端能的吧,看什么浏览器,下载文件控制台都会显示的