//private string _errmsg = ""; //private string _output = ""; public string FullPage(string url) { _raisedError = 0; //_errmsg = ""; //_output = ""; var dir = S.Server.MapPath("Content/screenshots/"); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (url.Contains("://")) { var md5 = MD5.Create(); //create md5 hash from unique URL (after removing protocol from URL) var id = url.Split("://", 2)[1].Replace(".", "").Replace("/", "_"); var hash = S.Util.Str.CreateMD5(id); var filepart = hash.Substring(1, 12); var ext = ".jpg"; var filename = filepart + ext; var i = 0; while (i++ <= 2) //try generating screenshot 2 times maximum or fail trying { var process = new Process() { StartInfo = new ProcessStartInfo { FileName = (string)S.Server.Cache["nodejs"], //get nodejs cli command name from config file Arguments = S.Server.MapPath("chrome.js") + " --url=\"" + url + "\" --full --format=\"jpg\" --filename=\"" + filename + "\"", RedirectStandardOutput = true, RedirectStandardError = true, UseShellExecute = false, CreateNoWindow = true, WorkingDirectory = dir } }; process.OutputDataReceived += OutputDataHandler; process.ErrorDataReceived += FullPageErrorDataHandler; process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); //check if file exists if (File.Exists(dir + filename)) { //resize image var images = new Utility.Images(S); var image = images.Load(dir + filename); var outputfolder = S.Server.MapPath("/wwwroot/content/screenshots/"); if (!Directory.Exists(outputfolder)) { Directory.CreateDirectory(outputfolder); } images.GenerateThumbnails(image, outputfolder); break; } //check for raised errors if (_raisedError > 0) { switch (_raisedError) { case 1: //return Error("Cannot connect to headless Chrome browser server"); //try to restart headless Chrome browser server StartHeadlessChromeServer(); break; } } if (i == 2) { return(Error()); } Thread.Sleep(1000); } return(filename + "|" + id); } return(Error()); }
public WebRequest Upload() { WebRequest wr = new WebRequest(); if (Files.Count > 0) { string folder = R.Request.Query["folder"]; if (folder == null) { folder = ""; } if (folder != "") { folder += "/"; } string path = "/wwwroot/content/websites/" + R.Page.websiteId + "/photos/" + folder; folder = folder.Replace("/", ""); string ext = ""; string name = ""; string filename = ""; string filenew = ""; bool generated = false; Utility.Images image = new Utility.Images(R); SqlClasses.Dashboard sqlDash = new SqlClasses.Dashboard(R); foreach (IFormFile file in Files) { filename = R.Util.Str.replaceAll(ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'), "", new string[] { "-", "_", "!", "@", "#", "$", "%", "&", "*", "+", "=", ",", "?" }); name = R.Util.Str.CreateID(7).ToLower(); ext = R.Util.Str.getFileExtension(filename).ToLower(); generated = false; switch (ext) { case "jpg": case "jpeg": case "png": case "gif": if (!Directory.Exists(R.Server.MapPath(path))) { //create directory Directory.CreateDirectory(R.Server.MapPath(path)); } //save original photo to disk filenew = name + "." + ext; file.SaveAs(R.Server.MapPath(path + filenew)); if (ext != "gif") { // create 7 image sizes: [original (max 4096)], xl (1920), lg (800), med (400), sm (200), tiny (100), icon (50) try { image.GeneratePhotos(path, filenew); generated = true; } catch (Exception ex) { R.Page.RegisterJS("err", "alert('Error: " + ex.Message.Replace("'", "\\'") + ");"); } } else { generated = true; } if (generated == true) { //get photo dimensions Utility.structImage photo = image.Load(path, filenew); //save photo to database sqlDash.AddPhoto(R.Page.websiteId, folder, filenew, filename, photo.width, photo.height); } break; } } } return(wr); }
public WebRequest Upload() { WebRequest wr = new WebRequest(); if(Files.Count > 0) { string folder = R.Request.Query["folder"]; if (folder == null) { folder = ""; } if(folder != "") { folder += "/"; } string path = "/wwwroot/content/websites/" + R.Page.websiteId + "/photos/" + folder; folder = folder.Replace("/", ""); string ext = ""; string name = ""; string filename = ""; string filenew = ""; bool generated = false; Utility.Images image = new Utility.Images(R); SqlClasses.Dashboard sqlDash = new SqlClasses.Dashboard(R); foreach (IFormFile file in Files) { filename = R.Util.Str.replaceAll(ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'), "", new string[] { "-", "_", "!", "@", "#", "$", "%", "&", "*", "+", "=", ",", "?" }); name = R.Util.Str.CreateID(7).ToLower(); ext = R.Util.Str.getFileExtension(filename).ToLower(); generated = false; switch (ext) { case "jpg": case "jpeg": case "png": case "gif": if (!Directory.Exists(R.Server.MapPath(path))) { //create directory Directory.CreateDirectory(R.Server.MapPath(path)); } //save original photo to disk filenew = name + "." + ext; file.SaveAs(R.Server.MapPath(path + filenew)); if(ext != "gif") { // create 7 image sizes: [original (max 4096)], xl (1920), lg (800), med (400), sm (200), tiny (100), icon (50) try { image.GeneratePhotos(path, filenew); generated = true; } catch (Exception ex) { R.Page.RegisterJS("err", "alert('Error: " + ex.Message.Replace("'", "\\'") + ");"); } }else { generated = true; } if(generated == true) { //get photo dimensions Utility.structImage photo = image.Load(path, filenew); //save photo to database sqlDash.AddPhoto(R.Page.websiteId, folder, filenew, filename, photo.width, photo.height); } break; } } } return wr; }