C#获取HTTP路径下的所有文件信息

HTTP里我们常用get,post或head方法来获取站点的文件或相关信息.而这些对于上述要求是做不到的.这里使用了"PROPFIND"方法来实现该需求.有兴趣的话可以了解一下相关的资料.

话不多说了.直接上代码.

publicclassResource

{

publicstringName;

publicboolIsFolder;

publicstringUrl;

publicDateTimeLastModified;

}

publicstaticSortedListGetDirectoryContents(stringurl,booldeep)

{

//Retrieve the File

HttpWebRequestRequest = (HttpWebRequest)HttpWebRequest.Create(url);

Request.Headers.Add("Translate: f");

Request.Credentials =CredentialCache.DefaultCredentials;

stringrequestString ="<?xml version=/"1.0/" encoding=/"utf-8/" ?>"+

"<a:propfind xmlns:a=/"DAV:/">"+

"<a:prop>"+

"<a:displayname/>"+

"<a:iscollection/>"+

"<a:getlastmodified/>"+

"</a:prop>"+

"</a:propfind>";

Request.Method ="PROPFIND";

if(deep ==true)

Request.Headers.Add("Depth: infinity");

else

Request.Headers.Add("Depth: 1");

Request.ContentLength = requestString.Length;

Request.ContentType ="text/xml";

StreamrequestStream = Request.GetRequestStream();

requestStream.Write(Encoding.ASCII.GetBytes(requestString), 0,Encoding.ASCII.GetBytes(requestString).Length);

requestStream.Close();

HttpWebResponseResponse;

StreamReaderrespStream;

try

{

Response = (HttpWebResponse)Request.GetResponse();

respStream =newStreamReader(Response.GetResponseStream());

}

catch(WebExceptione)

{

Debug.WriteLine("错误"+ url);

throwe;

}

StringBuilderSB =newStringBuilder();

char[] respChar =newchar[1024];

intBytesRead = 0;

BytesRead = respStream.Read(respChar, 0, 1024);

while(BytesRead > 0)

{

SB.Append(respChar, 0, BytesRead);

BytesRead = respStream.Read(respChar, 0, 1024);

}

respStream.Close();

XmlDocumentXmlDoc =newXmlDocument();

XmlDoc.LoadXml(SB.ToString());

XmlNamespaceManagernsmgr =newXmlNamespaceManager(XmlDoc.NameTable);

nsmgr.AddNamespace("a","DAV:");

XmlNodeListNameList = XmlDoc.SelectNodes("//a:prop/a:displayname", nsmgr);

XmlNodeListisFolderList = XmlDoc.SelectNodes("//a:prop/a:iscollection", nsmgr);

XmlNodeListLastModList = XmlDoc.SelectNodes("//a:prop/a:getlastmodified", nsmgr);

XmlNodeListHrefList = XmlDoc.SelectNodes("//a:href", nsmgr);

SortedListResourceList =newSortedList();

ResourcetempResource;

for(inti = 0; i < NameList.Count; i++)

{

if(HrefList[i].InnerText.ToLower(newCultureInfo("en-US")).TrimEnd(newchar[] {'/'}) != url.ToLower(newCultureInfo("en-US")).TrimEnd(newchar[] {'/'}))

{

tempResource =newResource();

tempResource.Name = NameList[i].InnerText;

tempResource.IsFolder =Convert.ToBoolean(Convert.ToInt32(isFolderList[i].InnerText));

tempResource.Url = HrefList[i].InnerText;

tempResource.LastModified =Convert.ToDateTime(LastModList[i].InnerText);

ResourceList.Add(tempResource.Url, tempResource);

}

}

returnResourceList;

}

主要利用了WebDAV 的功能来实现.请把站点的目录浏览权限给打开,使用时调用上面的方法即可获取相关的信息.如果想下载的话,那可以根据获取的URL再次进行下载.



C# Http文件下载公共类(支持断点续传)

复制代码
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.IO;
usingSystem.Net;

namespaceXcDownLoadFile
{
public classDownLoadFile
{
///
/// 下载文件方法
///
/// 文件保存路径和文件名
/// 返回服务器文件名
///
public boolDeownloadFile( stringstrFileName, stringfile)
{
boolflag= false;
// 打开上次下载的文件
longSPosition= 0;
// 实例化流对象
FileStreamFStream;
// 判断要下载的文件夹是否存在
if(File.Exists(strFileName))
{
// 打开要下载的文件
FStream=File.OpenWrite(strFileName);
// 获取已经下载的长度
SPosition=FStream.Length;
FStream.Seek(SPosition,SeekOrigin.Current);
}
else
{
// 文件不保存创建一个文件
FStream= newFileStream(strFileName,FileMode.Create);
SPosition= 0;
}
try
{
// 打开网络连接
HttpWebRequestmyRequest=(HttpWebRequest)HttpWebRequest.Create( " http://www.newxing.com/download/ "+file);
if(SPosition> 0)
myRequest.AddRange(( int)SPosition); // 设置Range值
// 向服务器请求,获得服务器的回应数据流
StreammyStream=myRequest.GetResponse().GetResponseStream();
// 定义一个字节数据
byte[]btContent= new byte[ 512];
intintSize= 0;
intSize=myStream.Read(btContent, 0, 512);
while(intSize> 0)
{
FStream.Write(btContent, 0,intSize);
intSize=myStream.Read(btContent, 0, 512);
}
// 关闭流
FStream.Close();
myStream.Close();
flag= true; // 返回true下载成功
}
catch(Exception)
{
FStream.Close();
flag= false; // 返回false下载失败
}
returnflag;
}
}
}

C#获取Web文件夹目录并下载到本地 一、根据文件夹路径获取目录 这里需要注意的是,当文件名称为中文或特殊字符的时候,url和text是不一样的,url为URI,utf-8后的地址编码。二、从服务端下载文件到本地 阅读详情

相关推荐

C#访问Http及https操作

public class ApiResult { public int statusCode; public string result; public string errcode; public string memo; } private ApiR...

DavidLiu的博客 6324

C#获取HTTP路径下的所有文件信息(可以做侦测了)

早上看到BBS上有这个贴子,"知道文件夹的路径 怎么把那个文件夹里的全部图片copy下来"看到这样一个命题,首先想到是如何获取该路径下的全部的目录结构.我们有IE里有时是可以看到某个站点的目录结构的.如FTP不就是这样一个例子吗.首先该站点要支持目录浏览的功能.如果已关闭这个功能,那我暂时也想不出办法.HTTP里我们常用get,post或head方法来获取站点的文件或相关信息.而这些对于上

greystar的专栏 7020

C# HttpWebRequest详解

一.前言 HttpWebRequest是C#原生语法提供的实现了Http协议完整封装的类,可以实现任意类型的Http请求。但是也因为参数众多,导致很多人不容易掌握它。 今天我们来尝试从简入繁的给大家介绍下HttpWebRequest 二.常用属性 AllowAutoRedirect:获取或设置一个值,该值指示请求是否应跟随重定向响应。 CookieContainer:获取或设置与此请求关联的cookie。 Credentials:获取或设置请求的身份验证信息。 KeepAlive:获取或设置

TxNet 3万+

C# 截取http 目录

//int ss = str.LastIndexOf("\\");//最后出现                 //string dd= str.Substring(0,str.LastIndexOf("\\")+1); //文件名称前                 //string aa= str.Substring(str.LastIndexOf("\\")+1,str.LastInde

小新 823

C#中使用HTTP POST上传文件的综合指南

在当今的网络应用中,文件上传是用户交互不可或缺的一部分。通过HTTP POST请求方式上传文件是实现这一功能的一种常见技术手段。特别是对于C#开发者,熟悉如何使用HTTP协议以及相关类库如HttpClient和WebClient来处理文件上传是基础且重要的技能。本章将为您提供一个概览,通过理解HTTP POST上传文件的工作原理和流程,帮助开发者更加高效地实现文件上传功能。我们将从HTTP POST请求的工作原理开始讲起,涉及请求与响应模型、MIME类型和请求头的构造。

weixin_42443533的博客 2034

GROMACS+PLUMED联合安装避坑指南:为什么你的plumed patch总是失败?

本文深入解析GROMACS与PLUMED联合安装中补丁失败的常见原因,并提供详细的避坑指南。针对版本兼容性、环境配置和编译选项等关键问题,给出从源码选择、环境搭建到手动合并补丁的完整解决方案,帮助用户成功整合这两个强大的分子动力学工具,实现增强采样模拟。

weixin_29302047的博客 290

远程目录和文件判断

C# winForm 获取虚拟目录中的文件信息 查到这种方法 System.DirectoryServices.DirectoryEntry Entry = new DirectoryEntry( "IIS://IP地址/W3SVC/1/Root "); foreach(DirectoryEntry de in Entry.Children) { if(de.Sch...

dkopg24406的专栏 525

【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

【内附代码】【深大计算机网络】实验三 可靠传输机制 实验报告 附代码

m0_74268508的博客 1654

c# uri 取文件名_[C#]从URL中获取路径的最简单方法-new Uri(url).AbsolutePath

今天在写代码时遇到这样一个问题:如何从字符串 "http://job.cnblogs.com/images/job_logo.gif"中得到 "/images/job_logo.gif"?对这个问题的解决方法的要求是:1. 只能调用 .NET 类库中的 API;2. 用最简单的方法实现。开始我想到的是 System.IO.Path,代码如下:Path.GetDirectoryName(url) ...

weixin_39734646的博客 1193

sylar学习系列一

开发环境 Centos7最小系统 gcc 9.1 cmake 环境可能存在的一些问题 可能存在的问题,linux最小系统没有一些常用命令,如果我们处于外网我们可以yum安装,但却遇到以下问题 can not find a valid baseurl for repo: base/7/x86-64 可修改网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens123 # 不是每个主机都是ens123 把ONBOOT=no,改为ONBOOT=yes 重启网络

wuguinianjing的博客 1020

在Cursor中集成Ollama与Qwen2.5‑Coder:零成本本地AI开发环境搭建

本文详细介绍了如何零成本搭建本地AI开发环境,通过将Cursor IDE与本地运行的Ollama及Qwen2.5-Coder模型集成,实现数据不出本地的智能编程辅助。教程涵盖Ollama安装、模型拉取、ngrok内网穿透配置及Cursor设置等核心步骤,并提供了实战测试与常见问题排错指南,为注重隐私与成本的开发者提供安全高效的解决方案。

weixin_29296241的博客 1075

C# 将 HTTP 路径图片转为byte字节数据,VS2019

C#将http路径图片转为byte字节数据 输入图片Http地址,即可返回byte[] bytes public static byte[] Url_To_Byte(String filePath) { //第一步:读取图片到byte数组 HttpWebRequest request = (HttpWebRequest)WebRe...

weixin_42176639的博客 3842

云漾AI创作平台实战:如何用GPT4.0+Midjourney快速生成商业级插画(附Prompt模板)

本文详细介绍了如何利用云漾AI创作平台结合GPT4.0和Midjourney快速生成商业级插画。通过智能文案生成与视觉化工作流,大幅提升创作效率,适用于电商、社交媒体等多种场景。文章包含实用Prompt模板和参数调整技巧,帮助设计师和内容创作者高效产出专业插画。

weixin_29251567的博客 223

VS2019 C# 利用WCF和HTTP文件传输实现下载功能

WCF和HTTP文件传输 要求: 在同一个方案中,分别编写服务端程序和客户端程序,利用http和流传输实现文件下载功能。 源码:https://github.com/invokeG/WCF-HTTP-download 1. 在IService1中设置接口,获得文件信息的方法和获得文件流对象的方法 public interface IService1 { [OperationContract] List<string> GetFilesInfo();//字

weixin_44223180的博客 2886

408——计算机组成原理(持续更新)

小数点前的0代表正数,1代表负数。

qq_55202378的博客 1724

基于大模型的脑疝全流程预测与诊疗方案研究

目录一、引言1.1 研究背景与目的1.2 研究意义1.3 大模型技术概述二、脑疝概述2.1 定义与分类2.2 发病机制与病因2.3 临床表现2.4 诊断方法三、大模型在脑疝预测中的应用3.1 数据采集与预处理3.2 模型训练与选择3.3 模型验证与优化四、术前预测与评估4.1 病情严重程度预测4.2 手术风险预测4.3 个性化手术方案制定4.4 麻醉方案制定五、术中监测与决策5.1 实时监测指标5.2 大模型辅助决策5.3 应对突发情况六、术后评估与护理6.1 术后恢复情况评估6.2 并发症风险预测与预防6

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1286

C# 如何获取host以及是否是http

在 Controller 中。在页面(cstml)中。

Awzer_的博客 440

学术规范与论文写作(雨课堂)研究生 全部答案

1:如何造就优秀的学术论文 论文语法判断题 :全部是错的 2:如何撰写学术论文 3: SCI论文写作经验分享 4:论文写作与投稿技巧 5:学术伦理道德 答案仅供参考,研究生生活不易,大家如果有时间的话,还是可以学习学习的,毕竟老师讲的不错。加油,希望读研的每一个人都能顺利毕业! ...

Always-Learning 13万+

C# 获取网络路径文件大小信息的方法

C# 获取网络路径文件大小信息的方法 做一个获取网络文件的大小信息的小软件,由于我的电脑上网使用的是HTTP代理,所以FTp部分是不能测试代码的可行性,所以先把代码贴出来: //输入返回文件信息,包括文件名,格式,大小,以及其他信息 private string GetInfo(string URL) { string Resul...

weixin_30790841的博客 762

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C#后台获取根路径

C#后台获取当前系统根路径: string absoluteurl = Context.Request.Url.AbsoluteUri.Replace(Context.Request.RawUrl, "") + "/UserAgreement.aspx"; 获取到:http://localhost:26459/UserAgreement.aspx 转载于:https://www.cnbl...

weixin_30656145的博客 371

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

c# 网络编程之http

一、概述 本文目的是通过C#代码提供一个HTTP服务,正常情况下如果我们需要向外界提供HTTP服务,常规做法就是通过ASP.NET来实现,有时我们的应用程序或Windows服务需要向外提供一些简单的HTTP服务就可以自己实现,从而避免部署IIS增加系统复杂性。这里必须强调是一些简单的应用,如果应用比较复杂,涉及到路径解析HTML解析等,还是用WEB方式实现比较靠谱。 将HTTP和UDP、TCP放在同一个系列实际上有一点不合适,因为UDP、TCP属于传输层协议,HTTP属于应用层协议,希望读者首先有一个明确的

chinaherolts2008的博客 3673

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

c# 获取客户端IP地址方法

c#

qq_32110891的博客 3501
上一篇: Mapxtreme 加载地图
下一篇: .Net/C#: 实现支持断点续传多线程下载的 Http Web 客户端工具类
devgis
博客等级 码龄16年 52粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值