Browse Source

修正抓取远程图片的bug

懒得勤快 4 years ago
parent
commit
84087e1266

+ 2 - 1
src/Masuit.MyBlogs.Core/Controllers/ErrorController.cs

@@ -60,7 +60,8 @@ namespace Masuit.MyBlogs.Core.Controllers
                 var req = HttpContext.Request;
                 var ip = HttpContext.Connection.RemoteIpAddress;
                 req.EnableBuffering();
-                using var sr = new StreamReader(req.Body, Encoding.UTF8);
+                req.Body.Seek(0, SeekOrigin.Begin);
+                using var sr = new StreamReader(req.Body, Encoding.UTF8, false);
                 var body = await sr.ReadToEndAsync();
                 req.Body.Position = 0;
                 switch (feature.Error)

+ 12 - 12
src/Masuit.MyBlogs.Core/Extensions/TranslateMiddleware.cs

@@ -24,30 +24,30 @@ namespace Masuit.MyBlogs.Core.Extensions
             _next = next;
         }
 
-        public async Task Invoke(HttpContext context)
+        public Task Invoke(HttpContext context)
         {
+            if (context.Request.IsRobot())
+            {
+                return _next(context);
+            }
+
             string lang = context.Request.Query["lang"];
             lang ??= context.Request.Cookies["lang"];
             if (string.IsNullOrEmpty(lang))
             {
                 if (context.Request.Location().Contains(new[] { "台湾", "香港", "澳门", "Taiwan", "TW", "HongKong", "HK" }))
                 {
-                    await Traditional(context);
-                }
-                else
-                {
-                    await _next(context);
+                    return Traditional(context);
                 }
-                return;
+
+                return _next(context);
             }
             if (lang == "zh-cn")
             {
-                await _next(context);
-            }
-            else
-            {
-                await Traditional(context);
+                return _next(context);
             }
+
+            return Traditional(context);
         }
 
         private async Task Traditional(HttpContext context)

+ 5 - 12
src/Masuit.MyBlogs.Core/Extensions/UEditor/CrawlerHandler.cs

@@ -34,11 +34,11 @@ namespace Masuit.MyBlogs.Core.Extensions.UEditor
                 return WriteJson(new
                 {
                     state = "SUCCESS",
-                    list = sources.Except(_queue).AsParallel().Select(s =>
+                    list = (await sources.Except(_queue).AsParallel().SelectAsync(s =>
                     {
                         _queue.Add(s);
-                        return new Crawler(s).Fetch().Result;
-                    }).Select(x =>
+                        return new Crawler(s).Fetch();
+                    })).Select(x =>
                     {
                         _queue.Remove(x.SourceUrl);
                         return new
@@ -89,16 +89,9 @@ namespace Masuit.MyBlogs.Core.Extensions.UEditor
                     return this;
                 }
 
-                ServerUrl = PathFormatter.Format(Path.GetFileName(SourceUrl), CommonHelper.SystemSettings.GetOrAdd("UploadPath", "upload").Trim('/', '\\') + UeditorConfig.GetString("catcherPathFormat"));
-                var mediaType = response.Content.Headers.ContentType.MediaType;
+                ServerUrl = PathFormatter.Format(Path.GetFileNameWithoutExtension(SourceUrl), CommonHelper.SystemSettings.GetOrAdd("UploadPath", "upload").Trim('/', '\\') + UeditorConfig.GetString("catcherPathFormat")) + MimeMapper.ExtTypes[response.Content.Headers.ContentType?.MediaType ?? "image/jpeg"];
                 await using var stream = await response.Content.ReadAsStreamAsync();
                 var savePath = Path.Combine(AppContext.BaseDirectory + "wwwroot", ServerUrl);
-                if (string.IsNullOrEmpty(Path.GetExtension(savePath)))
-                {
-                    savePath += MimeMapper.ExtTypes[mediaType];
-                    ServerUrl += MimeMapper.ExtTypes[mediaType];
-                }
-
                 var (url, success) = await Startup.ServiceProvider.GetRequiredService<ImagebedClient>().UploadImage(stream, savePath, default);
                 if (success)
                 {
@@ -107,7 +100,7 @@ namespace Masuit.MyBlogs.Core.Extensions.UEditor
                 else
                 {
                     Directory.CreateDirectory(Path.GetDirectoryName(savePath));
-                    await File.WriteAllBytesAsync(savePath, stream.ToArray());
+                    await File.WriteAllBytesAsync(savePath, await stream.ToArrayAsync());
                 }
                 State = "SUCCESS";
             }

+ 1 - 1
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -72,7 +72,7 @@
         <PackageReference Include="TimeZoneConverter" Version="3.4.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
         <PackageReference Include="WinInsider.System.Net.Http.Formatting" Version="1.0.14" />
-        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.24" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.1.25" />
     </ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">

+ 1 - 1
src/Masuit.MyBlogs.Core/Properties/launchSettings.json

@@ -18,7 +18,7 @@
     "Masuit.MyBlogs.Core": {
       "commandName": "Project",
       "environmentVariables": {
-        "ASPNETCORE_ENVIRONMENT": "Development"
+        "ASPNETCORE_ENVIRONMENT": ""
       },
       "applicationUrl": "http://localhost:5000"
     }