CrazyIter_Bin 2 năm trước cách đây
mục cha
commit
e87244a8bb

+ 41 - 5
HTEXScreen/Controllers/ScreenController.cs

@@ -2,6 +2,7 @@
  
 using PuppeteerSharp;
 using System.Runtime.InteropServices;
+using System.Web;
 
 namespace HTEXScreen.Controllers
 {
@@ -9,8 +10,44 @@ namespace HTEXScreen.Controllers
     [Route("screen")]
     public class ScreenController : ControllerBase
     {
-        public ScreenController() { }
-        
+        private readonly  HttpClient _httpClient;
+        public ScreenController(HttpClient httpClient) {
+            _httpClient = httpClient;
+        }
+
+        [HttpGet("download")]
+        public async Task<IActionResult> Download([FromQuery] ScreenshotDto screenshot) {
+            try {
+                HttpResponseMessage response = await _httpClient.GetAsync(screenshot.url);
+                if (!string.IsNullOrWhiteSpace(screenshot?.url))
+                {
+                    string? url = screenshot?.url;
+                    string[] path = url.Split("/");
+                    string fileName = path[path.Length - 1];
+                    fileName=HttpUtility.UrlDecode(fileName);
+                    Stream stream = response.Content.ReadAsStream();
+                    if (!Directory.Exists("Download")){
+                        Directory.CreateDirectory("Download");
+                    }
+                    FileStream fs = new FileStream($"Download/{fileName}", FileMode.Create);
+                    byte[] bytes = new byte[stream.Length];
+                    stream.Read(bytes, 0, bytes.Length);
+                    stream.Seek(0, SeekOrigin.Begin);
+                    BinaryWriter bw = new BinaryWriter(fs);
+                    bw.Write(bytes);
+                    bw.Close();
+                    fs.Close();
+                    return Ok(screenshot);
+                }
+                else {
+                    return Ok("链接为空");
+                }
+            } catch (Exception ex) {
+                return  Ok($"{ex.Message}{ex.StackTrace}");
+            }
+        }
+
+
         /// <summary>
         /// C#使用Puppeteer  http://t.zoukankan.com/zhaotianff-p-13528507.html
         ///  文档https://learnku.com/docs/puppeteer/3.1.0/class-request/8559
@@ -73,7 +110,7 @@ namespace HTEXScreen.Controllers
                 return BadRequest($"{ex.Message}\n{ex.StackTrace}");
             }
         }
-        [HttpPost("screenshot-pngs")]
+        [HttpPost("screenshot-pdf")]
         public async Task<IActionResult> ScreenshotPngs(ScreenshotDto screenshot)
         {
 
@@ -109,7 +146,6 @@ namespace HTEXScreen.Controllers
                     Args = new string[] { "--no-sandbox", "--disable-setuid-sandbox" }
                 });
                
-                bool fullPage = true;
                 ViewPortOptions viewPortOptions = new ViewPortOptions
                 {
                     Width = screenshot.width,
@@ -199,7 +235,7 @@ namespace HTEXScreen.Controllers
     {
         public int width { get; set; } = 1920;
         public int height { get; set; } = 1080;
-        public string url { get; set; }
+        public string? url { get; set; }
         public List<string> urls { get; set; } = new List<string>();
         public int delay { get; set; }
     }

+ 0 - 33
HTEXScreen/Controllers/WeatherForecastController.cs

@@ -1,33 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-
-namespace HTEXScreen.Controllers
-{
-    [ApiController]
-    [Route("[controller]")]
-    public class WeatherForecastController : ControllerBase
-    {
-        private static readonly string[] Summaries = new[]
-        {
-        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
-    };
-
-        private readonly ILogger<WeatherForecastController> _logger;
-
-        public WeatherForecastController(ILogger<WeatherForecastController> logger)
-        {
-            _logger = logger;
-        }
-
-        [HttpGet(Name = "GetWeatherForecast")]
-        public IEnumerable<WeatherForecast> Get()
-        {
-            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
-            {
-                Date = DateTime.Now.AddDays(index),
-                TemperatureC = Random.Shared.Next(-20, 55),
-                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
-            })
-            .ToArray();
-        }
-    }
-}

BIN
HTEXScreen/HTEXScreen.zip


+ 1 - 1
HTEXScreen/Program.cs

@@ -6,7 +6,7 @@ builder.Services.AddControllers();
 // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
 builder.Services.AddEndpointsApiExplorer();
 builder.Services.AddSwaggerGen();
-
+builder.Services.AddHttpClient();
 var app = builder.Build();
 
 // Configure the HTTP request pipeline.

+ 0 - 13
HTEXScreen/WeatherForecast.cs

@@ -1,13 +0,0 @@
-namespace HTEXScreen
-{
-    public class WeatherForecast
-    {
-        public DateTime Date { get; set; }
-
-        public int TemperatureC { get; set; }
-
-        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
-
-        public string? Summary { get; set; }
-    }
-}