因为下载的同时要更新数据库的信息,所以直接写在超链接里就不行了.
用window.openIE有的 版本还不支持.
后来想到用一个aspx页面后台处理下载,
用流的方式,但有一个问题是 要下载的文件和网站不在同一机器.地址是类似http://...../a.zip
这样的话,FileStream似乎不支持网络路径.
代码如下:
string fileName = strName;//客户端保存的文件名
string filePath = "http://.....//a.zip";//路径
//以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.OpenOrCreate,FileAccess.Write);
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();
怎么办,有什么好办法.
用WebClient访问 http://...../a.zip
用这个我也试了,可是我这个用来做下载连接用的.它似乎不提示保存对话框
@自由VIVE: 你得区分在服务端运行和在客户端运行的差别,如果你想让客户端出现保存的对话框,你应该使用超链接的方式将你的文件URI嵌入在网页中。
@程序猿.码农: 1,如果用超链接<a href='a.zip'>这样写的话我还需要执行另外一个后台方法. 不知道怎么写.
2,如果是<a href='xxx.aspx'>然后在xxx.aspx的Load里面写处理(目前我就是这样的).
3,另外我请教您一下,用流的方式下载 和用超链接有什么大的本质上的区别.
如果用1,那种方式,能实现我另外执行一段代码的话那就再好不过了,是因为1那样我不会所以才用的2的方式,
请指教.
我qq 1198918404 如果方便的话 加一下好友,不方便也没有关系
你好请问下,后面你这个下载问题怎么解决的呢?
很好解决啊:在前台加个
<form id="attachmentForm" method="POST">
</form>
然后这样:
$('#attachmentForm').attr('action', '/AjaxTerminalInfo/DownloadAttachment.cspx?filepath=' + row[i].FilePath + "&filename=" + row[i].FileName);
$('#attachmentForm').submit();