当前台的JavaScript函数GetFile被执行时,为什么不能下载文件,浏览器都不动一下,代码如下:
前台的JavaScript
function GetFile() {
var s ="<%=DownFile('d:\001.file')%>" }后台代码
public string DownFile(string fileName)
{
FileInfo fi = new FileInfo(fileName);
FileStream fs = fi.OpenRead();
byte[] FileArray = new byte[(int)fs.Length];
fs.Read(FileArray, 0, FileArray.Length);
fs.Close(); Response.Buffer = true;
Response.Clear();
//Response.ContentType = contentType;
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(FileArray);
Response.Flush();
Response.End();
return string.Empty;
}
前台的JavaScript
function GetFile() {
var s ="<%=DownFile('d:\001.file')%>" }后台代码
public string DownFile(string fileName)
{
FileInfo fi = new FileInfo(fileName);
FileStream fs = fi.OpenRead();
byte[] FileArray = new byte[(int)fs.Length];
fs.Read(FileArray, 0, FileArray.Length);
fs.Close(); Response.Buffer = true;
Response.Clear();
//Response.ContentType = contentType;
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(FileArray);
Response.Flush();
Response.End();
return string.Empty;
}
否则AJAX
document.getElementById("button1").click();
点击btnUpload生成个事件,事件里写你要执行的后台代码
比如:上传控件就用个上传控件ID.onchange=function(){
document.getElementById("btnUpload").click();}
那个是asp.net后台执行的代码。你在浏览器上打印html源代码看看,你贴的跟真正“前台”的html代码一样吗?什么叫做“前台”代码?我想只要面试asp.net程序员时只要有人这么一说,就大概是该在面试结果的“淘汰”一栏上画上钩了。
DownFile后台方法就是让客户端下载一个文件呀,怎么没反映呢?
1. web.config中已经加入下面的引用
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>2.cs文件中这样写的
namespace WebApplication2
{
public partial class TestOpenFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(TestOpenFile)); //注册Ajax
.....
}
[AjaxPro.AjaxMethod()]
public string DownFile(string AFileName)
{ ...... }3.前台JavaScript
function GetFile(values) {
var s = WebApplication2.TestOpenFile.DownFile(values.toString()); //运行时这里报错:对象不支持此属性或方法
http://blog.163.com/mercury___851217/blog/static/49005854200962691910687/
1. web.config中已经加入下面的引用
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>2.cs文件中这样写的
namespace WebApplication2
{
public partial class TestOpenFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(TestOpenFile)); //注册Ajax
.....
}
[AjaxPro.AjaxMethod()]
public string DownFile(string AFileName)
{ ...... }3.前台JavaScript
function GetFile(values) {
var s = WebApplication2.TestOpenFile.DownFile(values.toString()); //运行时这里报错:对象不支持此属性或方法
我是上目的是: 根据前台传来的一个参数,后台读取一个文件,让浏览器,下载或者打开它.这要用什么方法呢?
非常简单,写一个aspx页或者ashx处理程序,处理文件下载,客户端用get方式调用file.aspx?file=xxxxx
其中1.aspx为用户看见的页面,2.aspx为处理文件下载的页面。
用户在1.aspx输入参数,通过ajax的get方法向2.aspx发送请求。
当前页面就没办法实现吗?
1.放了一个Hidden,Button
2.JavaScript,修改Hidden的值,并调用Button的Click()方法
3.Click执行时读取Hidden的值,并根据该值读取文件,放发给IE