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,你从你的网站上都我吧! --------------------编程问答--------------------
不好意思, 可能您理解错啦, 我的意思是说我想从WEB页里的上传控件用AJAX的方式进行读取Excel文件。 --------------------编程问答-------------------- 有人能给我一个解决思路吗? --------------------编程问答-------------------- 不上传是不可能的,就算你直接用Request.Files,文件已经上传到临时文件了,服务器只有获取到文件才能做读取 --------------------编程问答--------------------
那请问怎样上传到临时文件? 我不想直接上传上来啊, 毕竟每次操作的话都要上传一个Excel,不太好吧。 时间久了, 服务器上就有很多Excel文件了 --------------------编程问答-------------------- 你直接读取Request.Files里面的文件不做保存即可 --------------------编程问答--------------------
问题是我用了AJAX的ashx文件, 那里面得不到Request.Files的文件啊。 是空的,能否有代码参考? --------------------编程问答-------------------- 哦,没看到题,用ajax是无法上传二进制的,内部只能走普通文本,你可以通过一个iframe 的src来进行上传,也是无刷新的,在上传完之后通过ashx返回一个div Response.Write(str),表示上传成功即可 --------------------编程问答--------------------
请问有没有DEMO 代码 参考啊? 谢谢。。。。
补充:.NET技术 , C#