日期:2014-05-18 浏览次数:20915 次
string filename = Server.MapPath("uploadfiles/" + FileName); Response.Clear(); Response.ContentType = Mime; Response.AddHeader("Content-Disposition", "attachment;filename=\""+FileName+"\""); Response.Flush(); Response.WriteFile(filename);
------解决方案--------------------
http://www.cnblogs.com/liping13599168/archive/2007/03/12/672025.html
------解决方案--------------------
webform的话只能由客户保存服务器端输出的文件,而不能操作客户端的文件.当然也可以使用js来完成,不过这个不太现实
一般js是无法读写客户端文件的.
下面给个简单的例子给你,不需要生成文件的...
string cardStr="张三\n李四\n王五"; //string filename = Server.MapPath("uploadfiles/" + FileName);//这个文件由你服务器端使用IO生成 //当然也可以不需要生成文件,直接输出字符串也可以,主要看你设置的MIME了 Response.ContentType ="text/plain";//文本类型的mime Response.AddHeader("Content-Disposition", "attachment;filename=\"card.txt\"");//指定默认名称 //Response.WriteFile(filename);//把文件输出到客户端,这个会弹出保存对话框 Response.Write(cardStr);//由于设置了头,也会弹出保存对话框
------解决方案--------------------
1、文件放在外网服务器;
2、先将原文件下载;
3、将下载的文件转换为文本格式;
------解决方案--------------------
private bool DownFile(string fileName, string fullPath)
{
try
{
Response.ContentType = application / octet - stream;
Response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
System.IO.FileStream fs = System.IO.File.OpenRead(fullPath);
long fLen = fs.Length;
int size = 102400;//每100K同时下载数据
byte[] readData = new byte[size];//指定缓冲区的大小
if (size > fLen) size = Convert.ToInt32(fLen);
long fPos = 0;
bool isEnd = false;
while (!isEnd)
{
if ((fPos + size) > fLen)
{
size = Convert.ToInt32(fLen - fPos);
readData = new byte[size];
isEnd = true;
}
fs.Read(readData, 0, size);//读入一个压缩块
Response.BinaryWrite(readData);
fPos += size;
}
fs.Close();
System.IO.File.Delete(fullPath);
return true;
}
catch
{
return false;
}
}
下载之后再改.或者下载的时间.保存为 .txt