Javascript 是否使用FormData上载base64编码的图像?

Javascript 是否使用FormData上载base64编码的图像?,javascript,form-data,Javascript,Form Data,我有一个jpeg作为base64编码字符串 var image = "/9j/4AAQSkZJRgABAQEAS..." 我想使用FormData将此jpeg上载到服务器 var data = new FormData(); 将图像附加到数据的正确方式是什么 您的图像数据只不过是一个字符串,因此将其附加到FormData对象中,如下所示: data.append("image_data", image); 然后在服务器端,您可以将其直接存储在数据库中,或者将其转换为图像并存储在文件系统中。

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

var image = "/9j/4AAQSkZJRgABAQEAS..."
我想使用FormData将此jpeg上载到服务器

var data = new FormData();

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

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

data.append("image_data", image);
然后在服务器端,您可以将其直接存储在数据库中,或者将其转换为图像并存储在文件系统中。你可能会觉得很有帮助。

我觉得这篇文章()很有帮助。如果您的文件已表示为base64编码字符串,则首先需要从该字符串创建blob表示,然后可以使用FormData append。

var imgBase64=“data:image/jpeg;base64,/9j/4aaqskzjrgabaaaqaaad/2wbdaaamca…”//您的bse64图像
 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 })
      }
onSubmit(){ const file=DataURIToBlob(imgBase64) const formData=new formData(); append('upload',file,'image.jpg') formData.append('profile\u id',this.profile\u id)//其他参数 append('path','temp/')//其他参数 } 函数DataURIToBlob(dataURI:string){ 常量splitDataURI=dataURI.split(',')) const byteString=splitDataURI[0]。indexOf('base64')>=0?atob(splitDataURI[1]):decodeURI(splitDataURI[1]) 常量mimeString=splitDataURI[0]。拆分(':')[1]。拆分(';')[0] const ia=新的Uint8Array(byteString.length) for(设i=0;i
干得好!。我不明白为什么没有任何js原生方法来实现这一点。不管怎么说,这个方法很好用,至少对我来说是这样。我浪费了两天的时间,终于成功了。我可以用expo和image picker以及.net core确认这一点。在正常提取中使用它。这个解决方案对我来说非常有用。但是,我无法上传用手机摄像头拍摄的照片,我不知道为什么。似乎也适用于pdf文件:)