|
@@ -6,10 +6,19 @@ using System.Text.RegularExpressions;
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
namespace Hotline.Share.Tools;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// Html 转 Word 时,验证图片是否有效
|
|
|
+/// </summary>
|
|
|
public class HtmlImageValidator
|
|
|
{
|
|
|
private readonly HttpClient _httpClient = new HttpClient();
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Html 转 Word 时,验证图片是否有效
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="htmlContent"></param>
|
|
|
+ /// <returns></returns>
|
|
|
public string ValidateAndReplaceImagesAsync(string htmlContent)
|
|
|
{
|
|
|
string pattern = "<img[^>]+src=\"([^\"]+)\"[^>]*>";
|
|
@@ -28,12 +37,26 @@ public class HtmlImageValidator
|
|
|
return htmlContent;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 请求图片链接,判断是否有效
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="url"></param>
|
|
|
+ /// <returns></returns>
|
|
|
private bool IsImageAccessible(string url)
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- var response = _httpClient.GetAsync(url).GetAwaiter().GetResult();
|
|
|
- return response.IsSuccessStatusCode;
|
|
|
+ var task = _httpClient.GetAsync(url);
|
|
|
+ var completedTask = Task.WhenAny(task, Task.Delay(3000)).GetAwaiter().GetResult();
|
|
|
+
|
|
|
+ if (completedTask == task && task.Result.IsSuccessStatusCode)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
}
|
|
|
catch
|
|
|
{
|