示例#1
0
        /// <summary>
        /// 下载一个远程文件到指定的文件路径里
        /// </summary>
        /// <param name="davFile">一个WebDavFile的实体</param>
        /// <param name="localFile">本地的文件地址</param>
        /// <returns></returns>
        private DownloadInfo DownloadFile(WebDavFile davFile, string localFile)
        {
            DownloadInfo info = new DownloadInfo {
                FileUrl = davFile.Url
            };

            try
            {
                DownloadManager manager    = new DownloadManager(GetCredentials());
                string          remoteFile = davFile.Url;
                bool            result     = false;
                if (File.Exists(localFile))
                {
                    FileInfo fm = new FileInfo(localFile);
                    //判断本地文件是否和远程的一样
                    if (davFile.LastModifyDate == fm.LastWriteTime && davFile.Length == fm.Length)
                    {
                        info.Success = true;
                        result       = true;
                    }
                }
                if (!info.Success)
                {
                    string folder = localFile.Substring(0, localFile.LastIndexOf("\\") + 1);

                    if (!Directory.Exists(folder))
                    {
                        Directory.CreateDirectory(folder);
                    }

                    FileInfo file = new FileInfo(localFile);

                    if (file.Directory != null)
                    {
                        Directory.CreateDirectory(file.Directory.FullName);
                    }
                    //下载文件到指定的地址
                    result = manager.DownloadFile(davFile, localFile);

                    //更改文件最后修改时间
                    if (davFile.LastModifyDate != null)
                    {
                        File.SetLastWriteTime(localFile, davFile.LastModifyDate.Value);
                    }

                    info.Success = true;
                }
            }
            catch (Exception ex)
            {
                info.Success = false;
                info.Message = ex.Message;
            }
            return(info);
        }
示例#2
0
        /// <summary>
        /// 下载一个远程文件到指定的文件夹里,会根据远程文件的地址创建对应的目录结构
        /// </summary>
        /// <param name="file"></param>
        /// <param name="defaultFoder"></param>
        /// <param name="index">当前下载第几个</param>
        /// <param name="total">总共文件数</param>
        /// <returns></returns>
        private DownloadInfo Download(WebDavFile file, string defaultFoder, int index = 1, int total = 1)
        {
            string folderPath = CreateFolder(file.Url, defaultFoder);
            string localFile  = folderPath + "\\" + file.DispalyName;

            file.DownloadPath       = localFile;
            file.DownloadFolderPath = folderPath;
            //如若DownloadCompling不为空,执行相关的事件
            DownloadCompling?.Invoke(file, index, total);
            //下载文件到本地
            DownloadInfo result = DownloadFile(file, localFile);

            // //DownloadCompleted,执行相关的事件
            DownloadCompleted?.Invoke(file, index, total);

            return(result);
        }