实现代码如下:
其中使用AppDomain.CurrentDomain.SetupInformation.ApplicationBase是因为当时是在WebApi实现的功能,如果项目为Web项目就可以更改为其他方式。
private string GetMethodImage(string imgUrl)
{
string pathFile = AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "Uploads/Image/";
//判断文件夹是否存在
if (!Directory.Exists(pathFile))
{
Directory.CreateDirectory(pathFile);
}
pathFile += $@"{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.jpg";
WriteBytesToFile(pathFile, GetBytesFromUrl(imgUrl));
return pathFile;
}
public static byte[] GetBytesFromUrl(string url)
{
byte[] b;
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
WebResponse myResp = myReq.GetResponse();
Stream stream = myResp.GetResponseStream();
using (BinaryReader br = new BinaryReader(stream))
{
b = br.ReadBytes(500000);
br.Close();
}
myResp.Close();
return b;
}
public static void WriteBytesToFile(string fileName, byte[] content)
{
FileStream fs = new FileStream(fileName, FileMode.Create);
BinaryWriter w = new BinaryWriter(fs);
try
{
w.Write(content);
}
finally
{
fs.Close();
w.Close();
}
}
调用如下:
string filePath = "";//转存后的本地路径
string url="https://t7.baidu.com/it/u=1595072465,3644073269&fm=193&f=GIF";//网络图片地址
filePath = GetMethodImage(url);
也可以通过参数将本地地址提取出来,使用起来更加方便