帮忙分析下这段下载代码
有这么段下载文件的代码:
目前下载功能是能够实现,不过下载之后源文件就没有了。目前这个功能需要涉及到一部分直接保存在服务器硬盘上的文件,所以想请教各位怎么修改能够保留源文件?或者有什么不会删除源文件的下载方案可供参考的?小弟实在不想想把文件SaveAs到其他地方再下载,所以想问问各问。谢谢
// 输出硬盘文件,提供下载
// 输入参数 _Request: Page.Request对象, _Response: Page.Response对象, _fileName: 下载文件名, _fullPath: 带文件名下载路径, _speed 每秒允许下载的字节数
// 返回是否成功
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;
int pack = 10240; //10K bytes
//int sleep = 200; //每秒5次 即5*10K bytes每秒
int sleep = (int)Math.Floor((double)(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((double)((fileLength - startBytes) / pack)) + 1;
for (int i = 0; i < maxCount; i++)
{
if (_Response.IsClientConnected)
{
_Response.BinaryWrite(br.ReadBytes(pack));
System.Threading.Thread.Sleep(sleep);
}
else
{
i=maxCount;
}
}
}
catch
{
return false;
}
finally
{
br.Close();
myFile.Close();
}
}
catch(System.Exception e)
{
string s = e.ToString();
return false;
}
return true;
}
目前下载功能是能够实现,不过下载之后源文件就没有了。目前这个功能需要涉及到一部分直接保存在服务器硬盘上的文件,所以想请教各位怎么修改能够保留源文件?或者有什么不会删除源文件的下载方案可供参考的?小弟实在不想想把文件SaveAs到其他地方再下载,所以想问问各问。谢谢
...全文
相关推荐
使用python3批量下载rbsp数据的示例代码
主要介绍了使用python3批量下载rbsp数据的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JSP下载文件源代码
JSP下载文件源代码,利用jsp-SmartUpload实现,代码简单,使用方便,调用简单。
VC++天气预报的源代码
VC++天气预报的源代码:基本的下载网页内容以及对内容的分析
PubMed批量下载文献指南[代码]
本文详细介绍了如何通过PubMed批量下载文献的步骤,包括在PubMed上勾选文献并保存为txt文件,然后运行提供的Python代码进行批量下载。代码实现了文件选择、文献信息提取、PMC号识别及PDF下载功能,并提供了进度条和下载报告生成。此外,文章还提到了代码的局限性,如仅支持PMC号下载,并欢迎技术改进建议。整个过程旨在简化文献下载流程,适合科研人员快速获取所需文献。
视频代码与数据下载地址
视频代码与数据下载地址


