protected void Page_Load(object sender, EventArgs e) { string md5 = Request.QueryString["md5"]; string uid = Request.QueryString["uid"]; string fid = Request.QueryString["idSvr"]; string cbk = Request.QueryString["callback"]; string fd_idSvr = Request.QueryString["fd_idSvr"]; //返回值。1表示成功 int ret = 0; if (string.IsNullOrEmpty(md5) || string.IsNullOrEmpty(uid) || string.IsNullOrEmpty(fid)) { }//参数不为空 else { DBFile db = new DBFile(); db.UploadComplete(md5); ret = 1; } //更新文件夹已上传文件数 if (!string.IsNullOrEmpty(fd_idSvr)) { DBFolder.child_complete(int.Parse(fd_idSvr)); } Response.Write(cbk + "(" + ret + ")");//必须返回jsonp格式数据 }
/// <summary> /// 获取文件夹JSON数据 /// </summary> /// <param name="fid"></param> /// <param name="root"></param> /// <returns></returns> public static string GetFolderData(int fid, ref FolderInf root) { StringBuilder sb = new StringBuilder(); sb.Append("select "); sb.Append("fd_name"); sb.Append(",fd_length"); sb.Append(",fd_size"); sb.Append(",fd_pid"); sb.Append(",fd_pathLoc"); sb.Append(",fd_pathSvr"); sb.Append(",fd_folders"); sb.Append(",fd_files"); sb.Append(",fd_filesComplete"); sb.Append(" from cloud2_folders"); sb.Append(" where fd_id=@fd_id and fd_complete=1;"); DbHelper db = new DbHelper(); DbCommand cmd = db.GetCommand(sb.ToString()); db.AddInt(ref cmd, "@fd_id", fid); DbDataReader r = db.ExecuteReader(cmd); //FolderInf root = new FolderInf(); if (r.Read()) { root.m_name = r.GetString(0); root.m_lenLoc = r.GetInt64(1); root.m_size = r.GetString(2); root.m_pidSvr = r.GetInt32(3); root.m_idSvr = fid; root.m_pathLoc = r.GetString(4); root.m_pathSvr = r.GetString(5); root.foldersCount = r.GetInt32(6); root.filesCount = r.GetInt32(7); root.filesComplete = r.GetInt32(8); } r.Close(); //单独取已上传长度 root.lenSvr = DBFolder.GetLenPosted(fid); //取文件信息 JArray files = new JArray(); List <string> ids = new List <string>(); DBFile.GetCompletes(fid, ref files, ref ids); JObject obj = (JObject)JToken.FromObject(root); obj["files"] = files; obj["length"] = root.m_lenLoc; obj["ids"] = string.Join(",", ids.ToArray());// return(obj.ToString()); }
protected void Page_Load(object sender, EventArgs e) { string fid = Request.QueryString["fid"]; string cbk = Request.QueryString["callback"]; if (string.IsNullOrEmpty(fid) || string.IsNullOrEmpty(cbk)) { Response.Write(cbk + "(0)"); return; } //获取文件夹信息,和未完成的文件信息列表 string json = DBFolder.GetFilesUnComplete(fid); Response.Write(cbk + "(" + json + ")");//必须返回jsonp格式数据 }
protected void Page_Load(object sender, EventArgs e) { string fid = Request.QueryString["fid"]; string uid = Request.QueryString["uid"]; string callback = Request.QueryString["callback"]; int ret = 0; if (string.IsNullOrEmpty(fid) || string.IsNullOrEmpty(uid)) { }//参数不为空 else { DBFile db = new DBFile(); DBFolder.Remove(int.Parse(fid), int.Parse(uid)); ret = 1; } Response.Write(callback + "(" + ret + ")");//返回jsonp格式数据 }
protected void Page_Load(object sender, EventArgs e) { string id_file = Request.QueryString["id_file"]; string id_fd = Request.QueryString["id_folder"]; string uid = Request.QueryString["uid"]; string callback = Request.QueryString["callback"]; int ret = 0; if (string.IsNullOrEmpty(id_fd) || string.IsNullOrEmpty(uid)) { } else { DBFolder.Complete(int.Parse(id_fd), int.Parse(uid)); DBFile.fd_complete(int.Parse(id_file)); ret = 1; } Response.Write(callback + "(" + ret + ")"); }
protected void Page_Load(object sender, EventArgs e) { string folderStr = Request.Form["folder"]; string uidTxt = Request.Form["uid"]; int uid = int.Parse(uidTxt); if (string.IsNullOrEmpty(folderStr)) { return; } folderStr = HttpUtility.UrlDecode(folderStr); //文件夹ID,文件夹对象 Hashtable tbFolders = new Hashtable(); JArray arrFolders = new JArray(); JArray arrFiles = new JArray(); JObject jsonObj = JObject.Parse(folderStr); FolderInf fdroot = JsonConvert.DeserializeObject <FolderInf>(folderStr); fdroot.pathRel = fdroot.nameLoc; //相对路径 fdroot.m_idSvr = DBFolder.Add(ref fdroot); //添加到数据库 fdroot.idFile = DBFile.Add(ref fdroot); //向文件表添加一条数据 tbFolders.Add(0, fdroot); //提供给子文件夹使用 //解析文件夹 if (jsonObj["folders"] != null) { JArray jar = JArray.Parse(jsonObj["folders"].ToString()); for (int i = 0, l = jar.Count; i < l; ++i) { folderStr = jar[i].ToString();//把每一个元素转化为JObject对象 FolderInf folder = JsonConvert.DeserializeObject <FolderInf>(folderStr); folder.uid = uid; folder.pidRoot = fdroot.idSvr; //查找父级文件夹 FolderInf fdParent = (FolderInf)tbFolders[folder.m_pidLoc]; folder.pathRel = Path.Combine(fdParent.pathRel, folder.nameLoc); folder.m_pidSvr = fdParent.m_idSvr; folder.m_idSvr = DBFolder.Add(ref folder);//添加到数据库 tbFolders.Add(folder.m_idLoc, folder); arrFolders.Add(JToken.FromObject(folder)); } } DBFile db = new DBFile(); xdb_files f_exist = new xdb_files(); //解析文件 if (jsonObj["files"] != null) { JArray jar = JArray.Parse(jsonObj["files"].ToString()); for (int i = 0, l = jar.Count; i < l; ++i) { folderStr = jar[i].ToString();//把每一个元素转化为JObject对象 FileInf fileSvr = JsonConvert.DeserializeObject <FileInf>(folderStr); FolderInf folder = (FolderInf)tbFolders[fileSvr.pidLoc]; fileSvr.uid = uid; fileSvr.pidRoot = fdroot.m_idSvr; fileSvr.pidSvr = folder.idSvr; fileSvr.nameSvr = fileSvr.md5 + Path.GetExtension(fileSvr.pathLoc).ToLower(); //生成文件路径 var pb = new PathCloudBuilder(); fileSvr.pathSvr = pb.genFile(fileSvr.uid, fileSvr.md5, fileSvr.nameLoc); //存在相同文件 if (db.exist_file(fileSvr.md5, ref f_exist)) { fileSvr.lenSvr = f_exist.lenSvr; fileSvr.perSvr = f_exist.perSvr; fileSvr.pathSvr = f_exist.pathSvr; fileSvr.pathRel = f_exist.pathRel; fileSvr.postPos = f_exist.FilePos; fileSvr.complete = f_exist.complete; fileSvr.nameSvr = f_exist.nameSvr; } fileSvr.idSvr = DBFile.Add(ref fileSvr);//将信息添加到数据库 arrFiles.Add(JToken.FromObject(fileSvr)); } } //转换为JSON JObject obj = (JObject)JToken.FromObject(fdroot); obj["folders"] = arrFolders; obj["files"] = arrFiles; obj["complete"] = false; string json = obj.ToString(); json = HttpUtility.UrlEncode(json); //UrlEncode会将空格解析成+号, json = json.Replace("+", "%20"); Response.Write(json); }
protected void Page_Load(object sender, EventArgs e) { string folderStr = Request.Form["folder"]; string uidTxt = Request.Form["uid"]; int uid = int.Parse(uidTxt); if (string.IsNullOrEmpty(folderStr)) { return; } folderStr = HttpUtility.UrlDecode(folderStr); //文件夹ID,文件夹对象 Hashtable tbFolders = new Hashtable(); JObject jsonObj = JObject.Parse(folderStr); FolderInf fdroot = JsonConvert.DeserializeObject <FolderInf>(folderStr); fdroot.pathRel = fdroot.nameLoc;//相对路径 PathUuidBuilder pb = new PathUuidBuilder(); fdroot.pathSvr = pb.genFolder(uid, ref fdroot); if (!Directory.Exists(fdroot.pathSvr)) { Directory.CreateDirectory(fdroot.pathSvr); } fdroot.idSvr = DBFolder.Add(ref fdroot); //添加到数据库 fdroot.idFile = DBFile.Add(ref fdroot); //向文件表添加一条数据 tbFolders.Add(0, fdroot); //提供给子文件夹使用 //解析文件夹 JArray arrFolders = new JArray(); if (jsonObj["folders"] != null) { JArray jar = JArray.Parse(jsonObj["folders"].ToString()); for (int i = 0, l = jar.Count; i < l; ++i) { folderStr = jar[i].ToString();//把每一个元素转化为JObject对象 FolderInf folder = JsonConvert.DeserializeObject <FolderInf>(folderStr); folder.uid = uid; folder.pidRoot = fdroot.idSvr; //创建层级结构 FolderInf fdParent = (FolderInf)tbFolders[folder.m_pidLoc]; folder.pathSvr = Path.Combine(fdParent.pathSvr, folder.nameLoc); folder.pathRel = Path.Combine(fdParent.pathRel, folder.nameLoc); folder.m_pidSvr = fdParent.m_idSvr; folder.m_idSvr = DBFolder.Add(ref folder);//添加到数据库 tbFolders.Add(folder.m_idLoc, folder); arrFolders.Add(JToken.FromObject(folder)); } } //解析文件 JArray arrFiles = new JArray(); if (jsonObj["files"] != null) { JArray jar = JArray.Parse(jsonObj["files"].ToString()); for (int i = 0, l = jar.Count; i < l; ++i) { folderStr = jar[i].ToString();//把每一个元素转化为JObject对象 FileInf file = JsonConvert.DeserializeObject <FileInf>(folderStr); FolderInf pidFd = (FolderInf)tbFolders[file.pidLoc]; file.uid = uid; file.pidRoot = fdroot.m_idSvr; file.pidSvr = pidFd.idSvr; file.nameSvr = file.nameLoc; //以层级结构存储 file.pathSvr = Path.Combine(pidFd.pathSvr, file.nameLoc); file.idSvr = DBFile.Add(ref file);//将信息添加到数据库 arrFiles.Add(JToken.FromObject(file)); } } //转换为JSON JObject obj = (JObject)JToken.FromObject(fdroot); obj["folders"] = arrFolders; obj["files"] = arrFiles; obj["complete"] = false; string json = obj.ToString(); json = HttpUtility.UrlEncode(json); //UrlEncode会将空格解析成+号, json = json.Replace("+", "%20"); Response.Write(json); }
protected void Page_Load(object sender, EventArgs e) { DBFile.Clear(); DBFolder.Clear(); }
/// <summary> /// 获取所有文件和文件夹列表,不包含子文件夹,包含已上传完的和未上传完的 /// </summary> /// <param name="f_uid"></param> /// <returns></returns> static public string GetAll(int f_uid) { StringBuilder sb = new StringBuilder(); sb.Append("select "); sb.Append("f_id"); sb.Append(",f_fdTask"); sb.Append(",f_fdID"); sb.Append(",f_nameLoc"); sb.Append(",f_pathLoc"); sb.Append(",f_md5"); sb.Append(",f_lenLoc"); sb.Append(",f_sizeLoc"); sb.Append(",f_pos"); sb.Append(",f_lenSvr"); sb.Append(",f_perSvr"); sb.Append(",f_complete"); sb.Append(" from cloud2_files where f_uid=@f_uid and f_deleted=0 and f_fdChild=0;"); List <xdb_files> files = new List <xdb_files>(); DbHelper db = new DbHelper(); DbCommand cmd = db.GetCommand(sb.ToString()); db.AddInt(ref cmd, "@f_uid", f_uid); DbDataReader r = db.ExecuteReader(cmd); while (r.Read()) { xdb_files f = new xdb_files(); f.uid = f_uid; f.idSvr = r.GetInt32(0); f.f_fdTask = r.GetBoolean(1); f.f_fdID = r.GetInt32(2); f.nameLoc = r.IsDBNull(3) ? string.Empty : r.GetString(3); f.pathLoc = r.IsDBNull(4) ? string.Empty : r.GetString(4); f.md5 = r.IsDBNull(5) ? string.Empty : r.GetString(5); f.lenLoc = r.GetInt64(6); f.sizeLoc = r.IsDBNull(7) ? string.Empty : r.GetString(7); f.FilePos = r.GetInt64(8); f.lenSvr = r.GetInt64(9); f.perSvr = r.IsDBNull(10) ? string.Empty : r.GetString(10); f.complete = r.IsDBNull(11) ? false : r.GetBoolean(11); files.Add(f); } r.Close(); JArray arrFiles = new JArray(); foreach (xdb_files f in files) { //是文件夹任务=>取文件夹JSON if (f.f_fdTask) { FolderInf fd = new FolderInf(); f.fd_json = DBFolder.GetFilesUnComplete(f.f_fdID, ref fd); float pdPer = 0; long lenPosted = DBFolder.GetLenPosted(f.f_fdID); fd.lenSvr = lenPosted; f.lenSvr = lenPosted;//给客户端使用。 long len = fd.lenLoc; if (lenPosted > 0 && len > 0) { pdPer = (float)Math.Round(((lenPosted * 1.0f) / len * 1.0f) * 100.0f, 2); } f.idSvr = f.f_fdID;//将文件ID改为文件夹的ID,客户端续传文件夹时将会使用这个ID。 f.perSvr = pdPer.ToString() + "%"; f.sizeLoc = fd.size; } arrFiles.Add((JObject)JToken.FromObject(f)); } return(arrFiles.ToString()); }