在一些实际项目中,我们往往需要上传一些excel、word等办公文件,甚至是mp3、mp4等音频视频文件。
当然,大多数小型网站会放到自己服务器,如果文件量不大的话
如果文件数量会很多,那么就需要考虑使用第三方来保管存储
不管是自己服务器存储还是第三方存储,有时候总会需要下载到本地或者,这个时候自己就可以写个winform小工具
也趁这次空闲时间,给C#入门同行整理一个简单例子
下载效果
1、开发环境
1)win11操作系统
2).NET Framework 4.8
2、知识点
1) 带宽占用
如果是从自己服务器下载,那么在下载过程中,服务器会占用一定带宽
所以,若是操作线上服务器,为不影响用户体验,可以选择访问量少的时候操作
2)WebClient
3)HttpWebRequest
3、使用WebClient实现下载
这里找一个下载mp3的链接测试
每次操作完文件下载,即可释放或关闭
1)先对当前类进行实例化
2)实例化后,即可调用下载方法
3)再设置一个变量,下载后保存的文件完整路径
- 简单的代码
string url = txtUrl.Text;
string savaPath = $"{txtSavePath.Text}\\{Guid.NewGuid().ToString()}.mp3";
WebClient webClient = new WebClient();
webClient.DownloadFile(url, savaPath);
webClient.Dispose(); // 手动释放
4、使用WebClient异步下载
1)刚接触异步的小伙伴,可能对这个没什么概念
2)异步可以同时开启多个线程进行下载
3)异步接收的第一个参数由字符串变为了一个Uri类
string url = txtUrl.Text;
string savaPath = $"{txtSavePath.Text}\\{Guid.NewGuid().ToString()}.mp3";
using(var webClient=new WebClient())
{
Uri urlValue = new Uri(url);
webClient.DownloadFileAsync(urlValue, savaPath);
}
5、使用WebClient下载json数据
1)并在发送请求头加上数据
2)上传的数据需要转为二进制同时以form表达形式上传,大多数是这么规定
- 代码如下
string url = txtUrl.Text;
string savaPath = $"{txtSavePath.Text}\\{Guid.NewGuid().ToString()}.json";
using (var webClient = new WebClient())
{
Uri urlValue = new Uri(url);
string postString = "testvalue=123456&key=123";
webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
byte[] postData = Encoding.UTF8.GetBytes(postString);
byte[] responseData = webClient.UploadData(urlValue, "POST", postData);
string result = Encoding.UTF8.GetString(responseData);
}