C# 远程图片下载到本地
2024-10-20 03:55:46
下载方法
using System;
using System.Net;
using System.IO;
using System.Text;
namespace Common
{
/// <summary>
/// 下载远程图片保存到本地地址
/// </summary>
public class DowloadWXImg
{
/// <summary>
/// 下载图片
/// </summary>
/// <param name="picUrl">图片Http地址</param>
/// <param name="savePath">保存路径</param>
/// <param name="timeOut">Request最大请求时间,如果为-1则无限制</param>
/// <returns></returns>
public static bool DownloadPicture(string picUrl, string savePath, int timeOut=-1)
{ bool value = false; WebResponse response = null; Stream stream = null; try
{ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(picUrl); if (timeOut != -1) request.Timeout = timeOut; response = request.GetResponse(); stream = response.GetResponseStream(); if (!response.ContentType.ToLower().StartsWith("text/"))
value = SaveBinaryFile(response, savePath);
}
catch (Exception e) {
LogHelper.AddErrorLog("下载远程图片失败:"+e.ToString()); }
finally
{
if (stream != null) stream.Close();
if (response != null) response.Close();
}
return value;
}
private static bool SaveBinaryFile(WebResponse response, string savePath)
{
bool value = false;
byte[] buffer = new byte[1024];
Stream outStream = null;
Stream inStream = null;
try
{
if (File.Exists(savePath)) File.Delete(savePath);
outStream = System.IO.File.Create(savePath);
inStream = response.GetResponseStream();
int l;
do
{
l = inStream.Read(buffer, 0, buffer.Length);
if (l > 0) outStream.Write(buffer, 0, l);
} while (l > 0);
value = true;
}
finally
{
if (outStream != null) outStream.Close();
if (inStream != null) inStream.Close();
}
return value;
}
}
}
流程:
string img = "/Img/CustomerHeadImg/" + OrgID;
//string SavaWxImage = Server.MapPath(img); //该方法是获取网站所在的根目录
//
//System.AppDomain.CurrentDomain.BaseDirectory 这个方法 是获取网站下面的应用程序目录
string SavaWxImage = System.AppDomain.CurrentDomain.BaseDirectory+img;
if (!Directory.Exists(SavaWxImage))//是否存在文件夹,没存在则创建
Directory.CreateDirectory(SavaWxImage); bool isWXImg = DowloadWXImg.DownloadPicture(wxImage, SavaWxImage+"/" + unionid + ".jpg");
最新文章
- ******IT公司面试题汇总+优秀技术博客汇总
- C# MD5加密
- nginx的主要用途
- C#设计模式——迭代器模式(Iterator Pattern)
- Windows主机里利用VMware安装Linux(CentOS)虚拟机,Host-only连接上网方式详解
- js prototype
- AOP 之 6.1 AOP基础(拾陆)
- android avoiding-memory-leaks
- 《Code Complete》ch.25 代码调整策略
- 理解C# Lazy<;T>;
- C# 泛型转换 将object[] 数组转换为泛型列表
- [Usaco2008 Feb]Eating Together麻烦的聚餐[最长不下降子序列]
- JS 处理十六进制颜色渐变算法-输入颜色,输出渐变rgb数组
- HDU 2674 N!Again
- cookie的路径问题
- 使用 gzexe 快速加密解密文件内容
- dotnet 在build restore publish 的时候不显示警告
- python的变量和简单的数据类型
- Spark 基础之SQL 快速上手
- BZOJ 1059 [ZJOI2007]矩阵游戏 (二分图最大匹配)