using System; using System.Collections.Generic; using System.Data; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.IO; namespace UploadFile { public partial class NGServer : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string asr_session_guid = Request.Params["guid"] == null ? "" : Request.Params["guid"].ToString(); string asr_name = Request.Params["Filename"] == null ? "" : Request.Params["Filename"].ToString(); string asr_start_part = Request.Params["part"] == null ? "0" : Request.Params["part"].ToString(); //当前块 string asr_total_part = Request.Params["Parts"] == null ? "0" : Request.Params["Parts"].ToString(); //总块数 string asr_part_size = Request.Params["PartSize"] == null ? "0" : Request.Params["PartSize"].ToString(); //块尺寸 string asr_zip = Request.Params["zip"] == null ? "0" : Request.Params["zip"].ToString(); //是否压缩 true表示压缩 string asr_fid = Request.Params["fid"] == null ? "" : Request.Params["fid"].ToString(); //文件guid string asr_temp_name = string.Empty; string asr_path_full = string.Empty; string asr_path_temp = this.MapPath("~/temp/"); //如果没有定义上传目录,则取网站临时上传目录 object result = SQLiteHelper.QueryObject("select coalesce(info_str,'') from asr_config where code = 'asr_path'"); asr_path_temp = Convert.ToString(result) == "" ? asr_path_temp : result.ToString() + "\\"; if (asr_zip == "true") { asr_zip = "1"; asr_temp_name = asr_fid + ".zip"; } else { asr_zip = "0"; asr_temp_name = asr_fid + asr_name.Substring(asr_name.LastIndexOf('.'), asr_name.Length); } asr_path_full = asr_path_temp + asr_session_guid + "\\" + asr_temp_name; //文件路径 //输出日志 UploadFileHelper.DebugView("NGServer", "当前上传,文件信息: asr_path_full = " + asr_path_full + " asr_start_part=" + asr_start_part + " asr_total_part=" + asr_total_part + " asr_part_size=" + asr_part_size); //硕正控件上传 if (Request.ContentLength > 0) { DirectoryInfo diTempFileDir = new DirectoryInfo(asr_path_temp + asr_session_guid + "//"); if (!diTempFileDir.Exists) { Directory.CreateDirectory(asr_path_temp + asr_session_guid + "//"); } byte[] buffer = new byte[Request.ContentLength]; using (BinaryReader br = new BinaryReader(Request.InputStream)) { br.Read(buffer, 0, buffer.Length); } if (File.Exists(asr_path_full)) { FileStream fs = new FileStream(asr_path_full, FileMode.OpenOrCreate); fs.Position = Convert.ToInt32(asr_start_part) * Convert.ToInt32(asr_part_size); fs.Write(buffer, 0, buffer.Length); fs.Close(); } else { FileStream fs = File.Create(asr_path_full); fs.Write(buffer, 0, buffer.Length); fs.Close(); } } if (Convert.ToInt32(asr_start_part) + 1 == Convert.ToInt32(asr_total_part)) { if (File.Exists(asr_path_full)) { string strSql = "select [asr_guid],[asr_table],[asr_code],[asr_attach_table],[asr_fill],[asr_fillname] from asr_public where [asr_session_guid] = '" + asr_session_guid + "'"; DataTable dt = SQLiteHelper.QueryDataTable(strSql); if (dt == null || dt.Rows.Count == 0) { Response.Write("尚未初始化"); return; } string asr_guid = dt.Rows[0]["asr_guid"].ToString(); string asr_fill = dt.Rows[0]["asr_fill"].ToString(); string asr_fillname = dt.Rows[0]["asr_fillname"].ToString(); string asr_attach_table = dt.Rows[0]["asr_attach_table"].ToString(); string asr_table = dt.Rows[0]["asr_table"].ToString(); string asr_code = dt.Rows[0]["asr_code"].ToString(); string asr_params = Request.Params["param"] == null ? "" : Request.Params["param"].ToString(); string asr_fid_old = Request.Params["fid_old"] == null ? "" : Request.Params["fid_old"].ToString(); bool success = false; int asr_id = 0; if (asr_fid_old != "") { //输出日志 UploadFileHelper.DebugView("NGServer", "修改附件,文件信息: asr_fid=" + asr_fid_old); //将标识设置为删除 result = SQLiteHelper.QueryObject("select count(*) from asr_info where asr_session_guid = '" + asr_session_guid + "' and asr_fid ='" + asr_fid_old + "'"); if (Convert.ToInt32(result) > 0) { success = SQLiteHelper.ExecuteSql("update asr_info set asr_flag = '-1' where asr_session_guid = '" + asr_session_guid + "' and asr_fid ='" + asr_fid_old + "'"); } else { //插入一条新文件记录 strSql = "insert into asr_info (asr_session_guid,asr_guid,asr_name,asr_fill,asr_filldt,asr_param,asr_flag,asr_fillname,asr_id,asr_table,asr_attach_table,asr_start_part,asr_total_part,asr_part_size,asr_temp_name,asr_fid,asr_zip)"; strSql += " values('" + asr_session_guid + "','" + asr_guid + "','" + asr_name + "','" + asr_fill + "','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" + asr_params + "','-1','" + asr_fillname + "'," + asr_id + ",'" + asr_table + "','" + asr_attach_table + "'," + asr_start_part + "," + asr_total_part + "," + asr_part_size + ",'" + asr_temp_name + "','" + asr_fid_old + "'," + asr_zip + ")"; success = SQLiteHelper.ExecuteSql(strSql); } } //获取最大附件id result = SQLiteHelper.QueryObject("select max(asr_id) from asr_info where asr_guid='" + asr_guid + "'"); asr_id = (result == DBNull.Value ? 1 : Convert.ToInt32(result) + 1); //插入一条新文件记录 strSql = "insert into asr_info (asr_session_guid,asr_guid,asr_name,asr_fill,asr_filldt,asr_param,asr_flag,asr_fillname,asr_id,asr_table,asr_attach_table,asr_start_part,asr_total_part,asr_part_size,asr_temp_name,asr_fid,asr_zip)"; strSql += " values('" + asr_session_guid + "','" + asr_guid + "','" + asr_name + "','" + asr_fill + "','" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" + asr_params + "','0','" + asr_fillname + "'," + asr_id + ",'" + asr_table + "','" + asr_attach_table + "'," + asr_start_part + "," + asr_total_part + "," + asr_part_size + ",'" + asr_temp_name + "','" + asr_fid + "'," + asr_zip + ")"; success = SQLiteHelper.ExecuteSql(strSql); //输出日志 UploadFileHelper.DebugView("NGServer", "完成当前文件上传,文件信息: asr_session_guid=" + asr_session_guid + " asr_guid=" + asr_guid + " asr_name=" + asr_name + " asr_fid=" + asr_fid); //自动保存 string autosave = "0"; //Request.Params["save"] == null ? "0" : Request.Params["save"].ToString(); if (autosave == "1") { //输出日志 UploadFileHelper.DebugView("NGServer", "自动保存,文件信息: asr_session_guid=" + asr_session_guid + " asr_guid=" + asr_guid + " asr_name=" + asr_name + " asr_fid=" + asr_fid); UploadFileHelper helper = new UploadFileHelper(asr_session_guid, asr_code); helper.Save(); } Response.Write("文件名:" + asr_name + ", 状态:" + (success ? "success" : "fail")); } else { Response.Write("文件名:" + asr_name + ", 状态:fail"); } } } } }