当前位置:编程学习 > C#/ASP.NET >>

ashx文件上传控件直接读取Excel文件内容的问题

各位高手大家好,本人想请教个技术问题啊。我在本地页面放了一个上传控件 想通过ajax的方式 来读取用户上传上来的Excel的文件内容, 但是不想把Excel先上传到服务器在读取, 想直接读取,请参考代码:

ashx文件:
 public void ProcessRequest (HttpContext context) {
  string fu= context.Request["fu"];//客户端上传上来的文件路径
  DataTable dt = ExcelDataSource(context.Server.MapPath(fu), "Sheet1"); //读取Excel文件内容
  context.Response.ContentType = "text/plain";
  context.Response.Write(dt.Rows.Count.ToString());
  }
public DataTable ExcelDataSource(string filepath, string sheetname)
  {
  string strConn;
  strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';";
  using (OleDbConnection conn = new OleDbConnection(strConn))
  {
  OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "$]", strConn);
  DataTable dt = new DataTable();
  oada.Fill(dt);
  return dt;
  }
  }

Web 页面就是一个上传控件:
ajax方式:
$.ajax({
  type: "POST",
  url: "Ajax/FU.ashx",
  data: "fu="+escape(fu.val()),
  success: function (data, textStatus) {
  alert(data);
  },
  error: function (XMLHttpRequest, textStatus, errorThrown) {
  alert(XMLHttpRequest.status);
  }
  //dataType: "xml"
  });

在本地测试是OK的, 我发布到服务器上就不行了, 报500错误,我认为就是因为WEB页在服务上所以得到客户端的文件路径没用的。请指点下 --------------------编程问答-------------------- “WEB页在服务上所以得到客户端的文件路径”?

我明告诉你,我有个图片在d:\down\hi_girl.png,你从你的网站上都我吧! --------------------编程问答--------------------
引用 1 楼  的回复:
“WEB页在服务上所以得到客户端的文件路径”?

我明告诉你,我有个图片在d:\down\hi_girl.png,你从你的网站上都我吧!


不好意思, 可能您理解错啦, 我的意思是说我想从WEB页里的上传控件用AJAX的方式进行读取Excel文件。  --------------------编程问答-------------------- 有人能给我一个解决思路吗? --------------------编程问答-------------------- 不上传是不可能的,就算你直接用Request.Files,文件已经上传到临时文件了,服务器只有获取到文件才能做读取 --------------------编程问答--------------------
引用 4 楼  的回复:
不上传是不可能的,就算你直接用Request.Files,文件已经上传到临时文件了,服务器只有获取到文件才能做读取


那请问怎样上传到临时文件? 我不想直接上传上来啊,  毕竟每次操作的话都要上传一个Excel,不太好吧。  时间久了, 服务器上就有很多Excel文件了 --------------------编程问答-------------------- 你直接读取Request.Files里面的文件不做保存即可 --------------------编程问答--------------------
引用 6 楼  的回复:
你直接读取Request.Files里面的文件不做保存即可


问题是我用了AJAX的ashx文件, 那里面得不到Request.Files的文件啊。 是空的,能否有代码参考? --------------------编程问答-------------------- 哦,没看到题,用ajax是无法上传二进制的,内部只能走普通文本,你可以通过一个iframe 的src来进行上传,也是无刷新的,在上传完之后通过ashx返回一个div Response.Write(str),表示上传成功即可 --------------------编程问答--------------------
引用 8 楼  的回复:
哦,没看到题,用ajax是无法上传二进制的,内部只能走普通文本,你可以通过一个iframe 的src来进行上传,也是无刷新的,在上传完之后通过ashx返回一个div Response.Write(str),表示上传成功即可


请问有没有DEMO 代码 参考啊? 谢谢。。。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,