2014-07-23 19:52:40|?次阅读|上传:wustguangh【已有?条评论】发表评论
服务器端代码是一个名为AjaxUpload.ashx的C#文件:
<%@ WebHandler Language="C#" CodeBehind="AjaxUpload.ashx.cs" Class="AjaxUpload" %> using System; using System.Linq; using LinqHelper; using System.Collections.Generic; using System.Web; using System.Web.Services; using System.IO; public class AjaxUpload : IHttpHandler //实现这个接口,意味着要实现该接口的两个方法: ProcessRequest和 IsReusable { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //响应数据类型 if (context.Request.Files.Count > 0 && context.Request.Files[0].ContentLength != 0) { try { decimal id; HttpPostedFile file = context.Request.Files[0]; //得到上传文件的对象 string path = yb.WebHelper.Fetch.MapPath("../../uploadProduceFile"); //string savefile = Path.Combine(path, Path.GetFileName(file.FileName)); string ext = ""; switch (Path.GetExtension(file.FileName)) { case ".xlsx": ext = ".xls"; break; case ".docx": ext = ".doc"; break; case ".pptx": ext = ".ppt"; break; default: ext = Path.GetExtension(file.FileName); break; } string DownPath = DateTime.Now.ToFileTime().ToString() + ext; string savefile = Path.Combine(path, DownPath); //文件信息写入数据库 using (var db = dbLinq.GetErpData()) { _AY_AjaxUpFile f = new _AY_AjaxUpFile(); f.DownPath = DownPath; f.FileName = Path.GetFileName(file.FileName); f.FileType = Path.GetExtension(file.FileName); f.FileLenth = file.ContentLength.ToString(); f.UpMan = ""; f.UpTime = System.DateTime.Now; db._AY_AjaxUpFile.InsertOnSubmit(f); try { db.SubmitChanges(); id = f.ID; // you can access your newRecord to get the ID } catch (Exception) { throw; } } file.SaveAs(savefile); //最核心的地方,实现文件上传 string result = id.ToString() + "," + DownPath; //string result ="{'d':'aaa'}"; //string result="Hello World"; HttpContext.Current.Response.Write(result); //返回最后结果 //HttpContext.Current.Response.End(); } catch (Exception e) { context.Response.Write(e); } } } public bool IsReusable { get { return false; } } }
该类使用IHttpHandler接口的ProcessRequest方法处理上传请求,context.Request.Files实现文件处理的核心类,file是一个HttpPostedFile类型的局部变量,通过它调用HttpPostedFile类的SaveAs方法实现文件的上传。最后调用 HttpContext.Current.Response.Write输出执行的结果。该类还使用了linq将文件信息存入数据库中。