使用 Chrome 扩展程序更改<输入类型= "file"接受= "/image*" >以输入网址,而不是用户选择的图像文件



我正在开发扩展程序,它会自动从网站获取信息,并使用表单打开另一个网站,并用原始网站的信息填充它。到目前为止,它运行良好,但我也想自动将图像从原始网站上传到具有表单的网站。

在具有表单的网站中,有以下HTML元素:

<div id="input_area">
<input type="file" accept="image/*" name="image" size="20" id="image" 
onchange="blocket.apps.newad.click_extra_images(this);" style="left: -154px; top: 16px;">
</div>

单击它会触发文件选择器,您可以在其中选择图像文件。我打算跳过整个文件选择器的事情,而是尝试从URL上传图像,因为图像可以很容易地从原始网站找到为URL。我也试图通过直接从URL而不是用户机器上传图像来避免隐私和安全问题。

这可能吗?包含表单的页面 https://www2.tori.fi/ai/form/1?ca=16。 只需选择第一页中的第一个选项(在KOKO TORI下(即可进入表单。在那里你应该找到元素。

https://i.stack.imgur.com/Q7LD5.jpg <-发生上传的元素的图片。

感谢您的知识和努力! <3


编辑:

我设法将输入类型编辑为"隐藏"并在上传之前更改输入的值(导致错误(。可以使用以下命令手动触发上传:

var event = new Event('change');
document.getElementById("image").dispatchEvent(event);

但是我找不到附加要上传的URL的方法。我还读过关于"斑点"的信息。Blob 显然是从 URL 获取数据的方法。但是我不知道如何将 blob(或文件(附加到该输入。我也尝试将 URL 作为上传值,但它会导致页面错误。

这个问题不是很笼统,但你不应该尝试在用户上传图像地址时获取图像地址,而是在上传之后,正如你所说。

由于上传后整个页面被重新加载,您可以尝试查看元素"img_0"(img_1,img_2...等(是否存在。然后保存源或下载文件。

if(document.getElementById("img_0")) {
var image_url = document.getElementById("img_0").src;
saveImageURL2DB(image_url);
}

您必须稍微修剪实际网址,因为它们使用大量重定向。实际的图像缩略图类似于此网址

<img id="img_0" src="https://img.tori.fi/image/thumbs/30/100001.jpg" alt="">

重定向到此 URL(图像文件名保持不变(

https://images.tori.fi/api/v1/imagestori/images/100001.jpg?rule=thumbs

您可以通过这些网址获得中等或完整的图像

https://images.tori.fi/api/v1/imagestori/images/100001.jpg?rule=medium_660
https://images.tori.fi/api/v1/imagestori/images/100001.jpg?rule=big

它认为数据库中的 blob 数据类型与此无关,除非您要将实际的图像文件保存到数据库(而不仅仅是使用 tori.fi 的图像文件(。

最新更新