Exemple #1
0
        /// <summary>
        /// 获取所有已经上传完的文件列表
        /// </summary>
        /// <param name="fidRoot"></param>
        /// <param name="files"></param>
        public static void GetCompletes(int fidRoot, ref JArray files, ref List <string> ids)
        {
            StringBuilder sql = new StringBuilder("select ");

            sql.Append("f_id");
            sql.Append(",f_nameLoc");
            sql.Append(",f_pathLoc");
            sql.Append(",f_lenLoc");
            sql.Append(",f_sizeLoc");
            sql.Append(",f_md5");
            sql.Append(",f_pidRoot");
            sql.Append(",f_pid");
            sql.Append(",f_lenSvr");
            sql.Append(",f_pathSvr");     //fix:服务器会重复创建文件项的问题
            sql.Append(",fd.fd_pathRel"); //
            sql.Append(" from cloud2_files as f");
            sql.Append(" left join cloud2_folders as fd");
            sql.Append(" on fd.fd_id = f.f_pid");
            sql.Append(" where f.f_pidRoot=@f_pidRoot and f.f_complete=1;");

            DbHelper  db  = new DbHelper();
            DbCommand cmd = db.GetCommand(sql.ToString());

            db.AddInt(ref cmd, "@f_pidRoot", fidRoot);
            DbDataReader r = db.ExecuteReader(cmd);

            while (r.Read())
            {
                FileInf fi = new FileInf();
                fi.idSvr   = r.GetInt32(0);
                fi.nameLoc = r.GetString(1);
                fi.pathLoc = r.GetString(2);
                fi.lenLoc  = r.GetInt64(3);
                fi.sizeLoc = r.GetString(4);
                fi.md5     = r.IsDBNull(5) ? string.Empty : r.GetString(5);
                fi.pidRoot = r.GetInt32(6);
                fi.pidSvr  = r.GetInt32(7);
                fi.lenSvr  = r.GetInt64(8);
                fi.pathSvr = r.IsDBNull(9) ? string.Empty : r.GetString(9); //fix:服务器会重复创建文件项的问题
                fi.pathRel = r.GetString(10) + "\\";                        //相对路径:root\\child\\folder\\
                files.Add((JObject)JToken.FromObject(fi));
                //添加到列表
                ids.Add(fi.idSvr.ToString());
            }
            r.Close();
        }
Exemple #2
0
        /// <summary>
        /// 更新文件夹中子文件信息,
        /// f_pathSvr
        /// md5
        /// f_id
        /// </summary>
        /// <param name="inf"></param>
        public void UpdateChild(ref FileInf inf)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("update cloud2_files set ");
            sb.Append(" f_pathSvr = @f_pathSvr , ");
            sb.Append(" f_md5 = @f_md5 ");
            sb.Append(" where f_id=@f_id ");

            DbHelper  db  = new DbHelper();
            DbCommand cmd = db.GetCommand(sb.ToString());

            db.AddString(ref cmd, "@f_pathSvr", inf.pathSvr, 255);
            db.AddString(ref cmd, "@f_md5", inf.md5, 40);
            db.AddInt(ref cmd, "@f_id", inf.idSvr);
            db.ExecuteNonQuery(cmd);
        }
Exemple #3
0
        /// <summary>
        /// 根据根文件夹ID获取未上传完成的文件列表,并转换成JSON格式。
        /// 说明:
        ///		1.此函数会自动对文件路径进行转码
        /// </summary>
        /// <param name="fidRoot"></param>
        /// <returns></returns>
        static public string GetUnCompletes(int fidRoot)
        {
            StringBuilder sql = new StringBuilder("select ");

            sql.Append("f_nameLoc");
            sql.Append(",f_pathLoc");
            sql.Append(",f_lenLoc");
            sql.Append(",f_sizeLoc");
            sql.Append(",f_md5");
            sql.Append(",f_pidRoot");
            sql.Append(",f_pid");
            sql.Append(",f_lenSvr");
            sql.Append(",f_pathSvr");//fix:服务器会重复创建文件项的问题
            sql.Append(" from cloud2_files where f_pidRoot=@f_pidRoot;");
            JArray arrFiles = new JArray();

            DbHelper  db  = new DbHelper();
            DbCommand cmd = db.GetCommand(sql.ToString());

            db.AddUInt32(ref cmd, "@f_pidRoot", fidRoot);
            DbDataReader r = db.ExecuteReader(cmd);

            while (r.Read())
            {
                FileInf fi = new FileInf();
                fi.m_nameLoc = r.GetString(0);
                fi.m_pathLoc = r.GetString(1);
                fi.m_pathLoc = HttpUtility.UrlEncode(fi.m_pathLoc);
                fi.m_pathLoc = fi.m_pathLoc.Replace("+", "%20");
                fi.m_lenLoc  = r.GetInt64(2);
                fi.m_size    = r.GetString(3);
                fi.m_md5     = r.IsDBNull(4) ? string.Empty : r.GetString(4);
                fi.m_pidRoot = r.GetInt32(5);
                fi.pidSvr    = r.GetInt32(6);
                fi.lenSvr    = r.GetInt64(8);
                fi.pathSvr   = r.IsDBNull(9) ? string.Empty : r.GetString(9);//fix:服务器会重复创建文件项的问题
                arrFiles.Add(JToken.FromObject(fi));
            }
            r.Close();
            return(arrFiles.ToString());
        }
Exemple #4
0
        /// <summary>
        /// 获取未上传完的文件列表
        /// </summary>
        /// <param name="fidRoot"></param>
        /// <param name="files"></param>
        static public void GetUnCompletes(int fidRoot, ref JArray files)
        {
            StringBuilder sql = new StringBuilder("select ");

            sql.Append("f_id");
            sql.Append(",f_nameLoc");
            sql.Append(",f_pathLoc");
            sql.Append(",f_lenLoc");
            sql.Append(",f_sizeLoc");
            sql.Append(",f_md5");
            sql.Append(",f_pidRoot");
            sql.Append(",f_pid");
            sql.Append(",f_lenSvr");
            sql.Append(",f_pathSvr");
            sql.Append(" from cloud2_files where f_pidRoot=@f_pidRoot and f_complete=0;");

            DbHelper  db  = new DbHelper();
            DbCommand cmd = db.GetCommand(sql.ToString());

            db.AddInt(ref cmd, "@f_pidRoot", fidRoot);//fix:AddUInt
            DbDataReader r = db.ExecuteReader(cmd);

            while (r.Read())
            {
                FileInf fi = new FileInf();
                fi.idSvr     = r.GetInt32(0);
                fi.m_nameLoc = r.GetString(1);
                fi.pathLoc   = r.GetString(2);
                fi.lenLoc    = r.GetInt64(3);
                fi.sizeLoc   = r.GetString(4);
                fi.md5       = r.IsDBNull(5) ? string.Empty : r.GetString(5);
                fi.pidRoot   = r.GetInt32(6);
                fi.pidSvr    = r.GetInt32(7);
                fi.lenSvr    = r.GetInt64(8);
                fi.pathSvr   = r.IsDBNull(9) ? string.Empty : r.GetString(9);//fix:续传文件夹时,服务器会重复创建文件项的问题。
                files.Add((JObject)JToken.FromObject(fi));
            }
            r.Close();
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        /// <summary>
        /// 添加一条文件信息,一船提供给ajax_fd_create.aspx使用。
        /// </summary>
        /// <param name="inf"></param>
        /// <returns></returns>
        static public int Add(ref FileInf inf)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("insert into cloud2_files(");
            sb.Append("f_pid");
            sb.Append(",f_pidRoot");
            sb.Append(",f_fdChild");
            sb.Append(",f_uid");
            sb.Append(",f_nameLoc");
            sb.Append(",f_nameSvr");
            sb.Append(",f_pathLoc");
            sb.Append(",f_pathSvr");
            sb.Append(",f_md5");
            sb.Append(",f_lenLoc");
            sb.Append(",f_lenSvr");
            sb.Append(",f_perSvr");
            sb.Append(",f_sizeLoc");
            sb.Append(",f_complete");
            sb.Append(") values(");
            sb.Append("@f_pid");
            sb.Append(",@f_pidRoot");
            sb.Append(",@f_fdChild");
            sb.Append(",@f_uid");
            sb.Append(",@f_nameLoc");
            sb.Append(",@f_nameSvr");
            sb.Append(",@f_pathLoc");
            sb.Append(",@f_pathSvr");
            sb.Append(",@f_md5");
            sb.Append(",@f_lenLoc");
            sb.Append(",@f_lenSvr");
            sb.Append(",@f_perSvr");
            sb.Append(",@f_sizeLoc");
            sb.Append(",@f_complete");
            sb.Append(");");
            //获取插入后的ID
            sb.Append("select @@IDENTITY;");

            DbHelper  db  = new DbHelper();
            DbCommand cmd = db.GetCommand(sb.ToString());

            db.AddInt(ref cmd, "@f_pid", inf.pidSvr);
            db.AddInt(ref cmd, "@f_pidRoot", inf.pidRoot);
            db.AddInBool(cmd, "@f_fdChild", true);
            db.AddInt(ref cmd, "@f_uid", inf.uid);
            db.AddString(ref cmd, "@f_nameLoc", inf.nameLoc, 255);
            db.AddString(ref cmd, "@f_nameSvr", inf.nameSvr, 255);
            db.AddString(ref cmd, "@f_pathLoc", inf.pathLoc, 255);
            db.AddString(ref cmd, "@f_pathSvr", inf.pathSvr, 255);
            db.AddString(ref cmd, "@f_md5", inf.md5, 40);
            db.AddInt64(ref cmd, "@f_lenLoc", inf.lenLoc);
            db.AddInt64(ref cmd, "@f_lenSvr", inf.lenSvr);
            db.AddString(ref cmd, "@f_perSvr", inf.perSvr, 6);
            db.AddString(ref cmd, "@f_sizeLoc", inf.sizeLoc, 10);
            db.AddBool(ref cmd, "@f_complete", inf.complete);
            object f_id = db.ExecuteScalar(cmd);

            //cmd.Parameters.Clear();
            //cmd.CommandText = "select top 1 f_id from cloud2_files order by f_id desc";
            //object f_id = db.ExecuteScalar(cmd);
            return(Convert.ToInt32(f_id));
        }