在没有服务器的情况下将图像转换为base64

Convert image to base64 without server

我正在使用 Pinterest Javascript SDK 来尝试创建一个图钉。设置图像的参数是其中之一;

image - 使用多部分表单数据上传您想要固定的图片

image_url - link 到您要固定的图像,或

image_base64 - Base64 编码图像link

我正在尝试从客户端创建 Pin 图,而不是通过服务器。我的表格很简单:

<div class="file-upload">
  <input type="file" name="fileToUpload" id="fileToUpload">
</div>

我使用

读取了它的值
const imageUrl = document.getElementById('fileToUpload').value;

我已经尝试了 imageimage_url 参数来发送那个值 (imageUrl),但是因为这个值解析到我硬盘上的一个地方,所以它没有' 不工作(可能是期待)。

所以现在我必须尝试弄清楚如何使用 image_base64 选项,这意味着我需要在用户机器上将图像转换为 base64。

我该怎么做呢?或者更好的是,如果有人知道我如何使用 image 参数,我认为那会更好

您可以使用附加到 <input type="file"> 元素的 change 事件,FileReaderFile 对象转换为 <input type="file"> 元素 .files 属性 到 change 事件处理程序

data URIdata URIbase64 部分

<div class="file-upload">
  <input type="file" name="fileToUpload" id="fileToUpload">
</div>
<script>
  const input = document.getElementById("fileToUpload");
  const reader = new FileReader;
  reader.onload = () => {
    const dataURL = reader.result;
    const base64 = reader.result.split(",").pop();
    console.log(dataURL, base64);
  }
  input.onchange = () => {
    reader.abort();
    reader.readAsDataURL(input.files[0]);
  }
</script>