使用 Puppeteer 如何从目录上传随机文件并将其删除?
Posted
技术标签:
【中文标题】使用 Puppeteer 如何从目录上传随机文件并将其删除?【英文标题】:With Puppeteer How To Upload Random Files From A Directory and Delete It? 【发布时间】:2022-01-17 18:22:42 【问题描述】:我想用node js写一个puppeteer脚本,从一个目录上传一个随机文件到服务器并删除它。
这是网站中的 html 代码:
<form action="/server.php">
<input type="file" id="myFile" name="filename">
<input type="submit">
</form>
所以现在我需要从目录上传一个图像文件(但我不知道图像名称),然后我需要从目录中删除该文件。
这是我当前的 puppeteer 代码:
//UPLOAD A PICTURE
const fileName = 'dont-know-the-name.png';
const picInput = await page.$('#myFile');
await picInput.uploadFile(fileName);
【问题讨论】:
【参考方案1】:实际上,负责上传文件的是Puppeteer's ElementHandle.uploadFile()
method.。您可能希望使用 Node 的 fs.readDir()
获取目录中文件的数组,获取随机元素,然后使用 fs.unlink()
删除它。
这是一个实现:
const dir = "YOUR/DIR/PATH";
const rnd = (arr) => arr[Math.floor(Math.random() * arr.length)];
const rndFile = () => `$dir/$rnd(fs.readdirSync(dir))`;
(async () =>
const browser = await puppeteer.launch(headless: false);
const page = await browser.newPage();
await page.goto("YOUR/UPLOAD/URL")
const file = rndFile();
const elementHandle = await page.$("input[type=file]");
await elementHandle.uploadFile(file);
await page.click("input[type=submit]")
fs.unlinkSync(file)
)();
【讨论】:
以上是关于使用 Puppeteer 如何从目录上传随机文件并将其删除?的主要内容,如果未能解决你的问题,请参考以下文章
php之上传小案例,根据时间:月日分创建目录并随机生成文件名
Puppeteer:如何存储会话(包括 cookie、页面状态、本地存储等)并稍后继续?