如何下载图像并在javascript中转换为base64?

如何下载图像并在javascript中转换为base64?,javascript,Javascript,我可以在不下载的情况下将图像发布到另一个页面吗? (转换为base64和post) 如何添加一些内容来下载此图像,然后将其转换为base64字符串?如果我没有弄错您的问题 首先将一个图像放入base64 在POST请求的正文中发送base64 您可以先等待(使用Promise)文件读取器读取imageData。然后将base64传递给下一个(post)函数: const toDataURL = (url) => fetch(url) .then(res => res.blob

我可以在不下载的情况下将图像发布到另一个页面吗? (转换为base64和post)


如何添加一些内容来下载此图像,然后将其转换为base64字符串?

如果我没有弄错您的问题

  • 首先将一个图像放入base64
  • 在POST请求的
    正文中发送base64
您可以先等待(使用Promise)文件读取器读取imageData
。然后
将base64传递给下一个(post)函数:

const toDataURL = (url) => fetch(url)
  .then(res => res.blob())
  .then(blob => new Promise((res, err) => {
    const FR = new FileReader();
    FR.onloadend = () => res(FR.result);
    FR.readAsDataURL(blob);
    FR.onerror = err;
  }));

const toSecToken = toDataURL('http://g1.gangsters.pl/php/sec_token.php?type=sa')
  .then(base64 => {
    const body = new FormData();
    body.append('base64', base64);
    body.append('blokada', true);
    body.append('y', Math.floor(Math.random() * (100 - 100 + 1)) + 100);
    return fetch('http://g1.gangsters.pl/php/ks_sa_100.php?co=61', { method:'POST', body });
  });

toSecToken.then(res => {
    console.log(res);
});
正如其他人所指出的,这应该在服务器端得到更好的处理。来回发送图像(+自base64编码以来增加的1/4重量-以及允许CORS的服务器…)似乎是不必要的开销。
因此,可以扩展
sec_token.php
来处理图像转发到
ks_sa_100.php
(+必要的查询参数,如
co=61
或任何需要的参数)

资源:





仅供参考,您必须下载它才能转换它,但您不需要看到它在本地下载或保存。您为什么要这样做?您不能将服务器设置为直接从URI获取吗?我的意思是,你要从客户端下载完整的文件,然后把它作为一个130%大的数据URI上传?毫无意义。这都是假设原始服务器允许您从跨源页面获取此资源(这并不常见)。这假设资源来自允许跨源请求的服务器。index.php?id=19:1跨源插件内容的可见大小必须大于400 x 300像素,否则它将被阻止。不可见的内容始终被阻止。我怎样才能用另一种方法来实现这一点?@IfaBoss尝试在PHP文件
头的顶部添加(“访问控制允许源代码:”
const toDataURL = (url) => fetch(url)
  .then(res => res.blob())
  .then(blob => new Promise((res, err) => {
    const FR = new FileReader();
    FR.onloadend = () => res(FR.result);
    FR.readAsDataURL(blob);
    FR.onerror = err;
  }));

const toSecToken = toDataURL('http://g1.gangsters.pl/php/sec_token.php?type=sa')
  .then(base64 => {
    const body = new FormData();
    body.append('base64', base64);
    body.append('blokada', true);
    body.append('y', Math.floor(Math.random() * (100 - 100 + 1)) + 100);
    return fetch('http://g1.gangsters.pl/php/ks_sa_100.php?co=61', { method:'POST', body });
  });

toSecToken.then(res => {
    console.log(res);
});
# ks_sa_100.php?co=61

$img = file_get_contents('http://g1.gangsters.pl/php/sec_token.php?type=sa');  
$base64 = base64_encode($img); // if you really need that base64 data string