使用 FormData 上传 base64 编码的图像?

新手上路,请多包涵

我有一个 jpeg 作为 base64 编码的字符串。

 var image = "/9j/4AAQSkZJRgABAQEAS..."

我想使用 FormData 将此 jpeg 上传到服务器。

 var data = new FormData();

将图像附加到数据的正确方法是什么?

原文由 user1031947 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 703
2 个回答

您的图像数据只不过是一个字符串,因此将其附加到您的 FormData 对象,如下所示:

 data.append("image_data", image);

然后在您的服务器端,您可以将其直接存储在数据库中或将其转换为图像并将其存储在文件系统中。您可能会发现 这篇文章 很有帮助。

原文由 HeadCode 发布,翻译遵循 CC BY-SA 3.0 许可协议

 var imgBase64 = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAMCA..." //your bse64 image

onSubmit(){
const file = DataURIToBlob(imgBase64)
const formData = new FormData();
formData.append('upload', file, 'image.jpg')
formData.append('profile_id', this.profile_id) //other param
formData.append('path', 'temp/') //other param
}

    function DataURIToBlob(dataURI: string) {
        const splitDataURI = dataURI.split(',')
        const byteString = splitDataURI[0].indexOf('base64') >= 0 ? atob(splitDataURI[1]) : decodeURI(splitDataURI[1])
        const mimeString = splitDataURI[0].split(':')[1].split(';')[0]

        const ia = new Uint8Array(byteString.length)
        for (let i = 0; i < byteString.length; i++)
            ia[i] = byteString.charCodeAt(i)

        return new Blob([ia], { type: mimeString })
      }

原文由 DINESH Adhikari 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题