asp下载文件代码(asp.net中用文件流方式下载文件,后台代码无错,前台浏览器没有下载反应)
本文目录
- asp.net中用文件流方式下载文件,后台代码无错,前台浏览器没有下载反应
- ASP.NET 中,实现download下载,弹出打开和保存对话框,不限制文件大小,跪求实现代码,谢谢了
- asp文件实现文件下载方法,求帮助
asp.net中用文件流方式下载文件,后台代码无错,前台浏览器没有下载反应
string filename = context.Request.ToString(); string fileName = "【下载】" + filename;//客户端保存的文件名 string filePath = System.Web.HttpContext.Current.Request.MapPath("~/UpFile/TraceCode/" + filename + "");//路径 FileStream fileStream = new FileStream(filePath, FileMode.Open); byte; fileStream.Read(bytes, 0, bytes.Length); fileStream.Close(); System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream"; System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName); System.Web.HttpContext.Current.Response.BinaryWrite(bytes); System.Web.HttpContext.Current.Response.Flush(); //System.Web.HttpContext.Current.Response.End(); //System.Web.HttpContext.Current.Response.Close(); System.Web.HttpContext.Current.ApplicationInstance.CompleteRequest();
ASP.NET 中,实现download下载,弹出打开和保存对话框,不限制文件大小,跪求实现代码,谢谢了
思路很简单,读取服务器文件路径,然后再保存数据流,下面是实现代码:(ps:因为要上班,来不及写很多注释,关键的地方加了几句注释哈)using System;using System.Collections;using System.Configuration;using System.Data;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.HtmlControls;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using YTLib.Basic;using YTLib.YTDBC;using System.IO;using System.Threading;namespace siteadmin.admin{ public partial class downfile : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string strSQL = ""; YTNDBObject dbo = new YTNDBObject(); dbo.DataName = "Main"; Page.EnableViewState = false; if(!IsPostBack) { string sid=Request; if(!YTLib.publicOP.IsNumString(sid)||sid==null) sid="0"; strSQL = "select * from FileSource where ID=@ID"; dbo.PrepareCommand(strSQL); dbo.SetCmdIntValue("@ID",int.Parse(sid)); DataTable dt=dbo.QueryData().Tables; string sourceName = (string)dt.Rows; sourceName.Trim();//消除空格 string filesnames = sourceName.Substring(7, sourceName.Length - 8); int index= sourceName.LastIndexOf("."); string extend = sourceName.Substring(index+1);//扩展名 string fullPath = "~/uploaded/" + sourceName; fullPath = Server.MapPath(fullPath); //读出该资源的下载次数 int downloadtimes = 0; downloadtimes = int.Parse(dt.Rows.ToString()); Page.Response.Clear(); bool success = ResponseFile(Page.Request, Page.Response, filesnames, fullPath, 1024000); if (!success) Response.Write("《script language=\"javascript\"》alert(\"Download file error\");window.location.href=\"../Download.aspx\"《/script》"); else { //记录下载次数 downloadtimes++; string sqlStr = "update FileSource set downloadCounts=" + downloadtimes + " where ID=@IID"; dbo.PrepareCommand(sqlStr); dbo.SetCmdIntValue("@IID",int.Parse(sid)); dbo.ExecuteNoQuery(); } Response.Write("《script language=\"javascript\"》window.location.href=\"../Download.aspx\"《/script》"); } } public static bool ResponseFile(HttpRequest _Request, HttpResponse _Response, string _fileName, string _fullPath, long _speed) { try { FileStream myFile = new FileStream(_fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); BinaryReader br = new BinaryReader(myFile); try { _Response.AddHeader("Accept-Ranges", "bytes"); _Response.Buffer = false;//不缓冲 long fileLength = myFile.Length; long startBytes = 0; double pack = 10240; //10K bytes int sleep = 200; //每秒5次 即5*10K bytes每秒 int sleep = (int)Math.Floor(1000 * pack / _speed) + 1; if (_Request.Headers != null) { _Response.StatusCode = 206; string { ’=’, ’-’ }); startBytes = Convert.ToInt64(range); } _Response.AddHeader("Content-Length", (fileLength - startBytes).ToString()); if (startBytes != 0) { //Response.AddHeader("Content-Range", string.Format(" bytes {0}-{1}/{2}", startBytes, fileLength-1, fileLength)); } _Response.AddHeader("Connection", "Keep-Alive"); _Response.ContentType = "application/octet-stream"; _Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(_fileName, System.Text.Encoding.UTF8)); br.BaseStream.Seek(startBytes, SeekOrigin.Begin); int maxCount = (int)Math.Floor((fileLength - startBytes) / pack) + 1; for (int i = 0; i 《 maxCount; i++) { if (_Response.IsClientConnected) { _Response.BinaryWrite(br.ReadBytes(int.Parse(pack.ToString()))); Thread.Sleep(sleep); } else { i = maxCount; } } } catch { return false; } finally { br.Close(); myFile.Close(); } } catch { return false; } return true; } } }
asp文件实现文件下载方法,求帮助
你下的是空链。只是个网页而已。因为有的网站怕盗链,所以虽然显示是下载,其实你如果按左键发现,还能打开一层网页。所以你应该在有下载字样的那里不点右键,而点左键,看能不能再打开。直到弹出HTTP下载框后,才能确定。这时,关闭HTTP下载,而采用讯雷下载,就能下到真正的文件了。
更多文章:
java正则表达式查找(JAVA正则表达式,matcher.find和 matcher.matches的区别)
2024年6月30日 18:47
图书管理系统java+mysql(求一个jsp+mysql实现的图书管理系统,含完整文件,可运行,简单一些就行了)
2024年8月4日 02:10
annotation什么意思(annotation是什么意思)
2024年6月28日 03:33
尚未调用coinitialize(尚未调用coinitialize怎么办)
2023年7月26日 19:40
asp下载文件代码(asp.net中用文件流方式下载文件,后台代码无错,前台浏览器没有下载反应)
2024年7月16日 21:10
兄弟连编程学校(哪位去兄弟连培训过python,请问课程是怎么安排的呢)
2024年7月21日 17:42
openstack存储管理服务(5款管理OpenStack服务器的开源工具)
2024年5月26日 23:47
文本编辑器和编译器的区别(编译器跟编辑器有什么区别还有什么是链接器)
2024年8月18日 06:25
stimulate游戏平台(take marvel是什么牌子)
2024年7月3日 05:32
crypton future media(初音未来为什么叫miku)
2024年6月6日 10:48
jquery效果代码(jquery 怎样点击两次 不同效果)
2024年8月26日 07:30
html网页设计主题(如何用html制作以东奥为主题的网页)
2024年10月5日 15:15
vue使用session(vue+django使用session的用户验证怎么做)
2024年7月14日 06:25
后缀csv是什么文件(excel中后缀为csv和xls有何区别)
2024年5月6日 02:31
best title是什么意思(best title for the passage 是什么意思)
2024年7月21日 13:08