takeSnap
parent
6d380c6cbb
commit
dc6194f7e7
|
@ -1,32 +1,34 @@
|
||||||
const puppeteer = require('puppeteer');
|
const puppeteer = require('puppeteer');
|
||||||
|
|
||||||
const takeSnap = async (req, res) => {
|
const takeSnap = async (req, res) => {
|
||||||
console.log('req.body.url', req.body.url);
|
|
||||||
|
|
||||||
// Set CORS headers
|
// Set CORS headers
|
||||||
res.setHeader('Access-Control-Allow-Origin', '*'); // Allow all origins
|
res.setHeader('Access-Control-Allow-Origin', '*'); // Allow all origins
|
||||||
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS methods
|
res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS'); // Allow POST and OPTIONS
|
||||||
res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // Allow Content-Type header
|
res.setHeader('Access-Control-Allow-Headers', 'Content-Type'); // Allow Content-Type header
|
||||||
|
|
||||||
|
|
||||||
// Handle preflight request (OPTIONS)
|
// Handle preflight request (OPTIONS)
|
||||||
if (req.method === 'OPTIONS') {
|
if (req.method === 'OPTIONS') {
|
||||||
res.status(200).end();
|
res.status(200).end(); // Respond to preflight request
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const url = req.body.url;
|
const url = req.body.url;
|
||||||
const browser = await puppeteer.launch();
|
const browser = await puppeteer.launch();
|
||||||
const page = await browser.newPage();
|
const page = await browser.newPage();
|
||||||
await page.goto(url, { waitUntil: 'networkidle2' });
|
await page.goto(url, { waitUntil: 'networkidle2' });
|
||||||
|
|
||||||
await page.screenshot({ path: 'screenshot.png', fullPage: true });
|
// Take screenshot and convert to base64
|
||||||
|
const screenshot = await page.screenshot({ encoding: 'base64', fullPage: true });
|
||||||
|
|
||||||
await browser.close();
|
await browser.close();
|
||||||
console.log('Screenshot saved as screenshot.png');
|
console.log('Screenshot taken');
|
||||||
|
|
||||||
// Send a response back to the client
|
// Send the base64-encoded image in the response
|
||||||
res.status(200).json({ message: 'Screenshot saved as screenshot.png' });
|
res.status(200).json({ image: screenshot });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error taking screenshot:', error);
|
console.error('Error taking screenshot:', error);
|
||||||
res.status(500).json({ error: 'Failed to take screenshot' });
|
res.status(500).json({ error: 'Failed to take screenshot' });
|
||||||
|
|
Loading…
Reference in New Issue