RT。
代码如下:
System.IO.FileInfo file = new System.IO.FileInfo(filename);
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
这样下载时。并没有弹出保存对话框。而是直接下载了。要找很久才能找到下载到本地的资源。
我filename是一个http地址。如http://data2.xx.com/mm/xx.mpe?pxd=1232323。
请问这样加了防盗链的URL资源怎么下载啊。。
代码如下:
System.IO.FileInfo file = new System.IO.FileInfo(filename);
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment; filename=" +HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", file.Length.ToString());
Response.WriteFile(file.FullName);
Response.Flush();
Response.End();
这样下载时。并没有弹出保存对话框。而是直接下载了。要找很久才能找到下载到本地的资源。
我filename是一个http地址。如http://data2.xx.com/mm/xx.mpe?pxd=1232323。
请问这样加了防盗链的URL资源怎么下载啊。。
解决方案 »
- asp.net 配置文件里 <providerOption name="CompilerVersion" value="v3.5"/> 不允许有子节点
- 一个简单的正则表达式的问题
- 一个控件不能即响应服务器事件又响应客户端事件么?
- WEB打印好麻烦,各位经验大师给建议用哪方控件 或方法比较快? 水晶不熟悉
- 奇怪的 web service 问题
- 问各位大大一个简单问题,如何让文本框实现自动换行???
- vs2005发布程序问题
- 如何取datagrid中最后一条记录的某一个字段的数据??
- 如何编写下文的的 XML Schema语句
- 如何在导出的excel中头部和底部加入表头和表尾??
- 如何实现webform中asp:treeview和iewc:treeview的右键菜单功能
- 为过程或函数##指定了过多的参数?
我这有一个,你看看有没有用吧,我下载都用的这个,有保存框
//下载函数
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["Range"] != null)
{
_Response.StatusCode = 206;
string[] range = _Request.Headers["Range"].Split(new char[] { '=', '-' });
startBytes = Convert.ToInt64(range[1]);
}
_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;
}