繁体   English   中英

从对象中提取Base64字符串

[英]Extract Base64 string from an object

我正在将base64 string发送到我的node.js服务器。 但是它在对象括号{}添加了字符串

前端代码:

encode base64字符串进行encode以保留它。

  let options = {
        headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
     };

let encodedImage = encodeURIComponent(body);

return this._http.put<IUser>(`${BASE_URL}/api/users/${id}/photo`, encodedImage, options)
  .map(data => {
    return data;
  })
  .catch(err => {
    // do whatever you want when error occurs
    console.log(err);

    // re-throw error so you can catch it when subscribing, fallback to generic error code
    return Observable.throw(err || 'API_ERROR');
  });

}

服务器端:

let upload = (req, res) => {

 let b64string = req.body;
 console.log(b64string);

}

控制台日志为:

{ 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQA.....+idkVe3H/9k=': '' }

如何从对象中提取base64字符串,以便可以访问它。 看起来很简单,但是我的大脑已经放弃了。 任何帮助将不胜感激。

更新:

在此处输入图片说明

更新2:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

似乎有些东西将您的字符串放入JSON编码的值中,因此{'...':'...'}。 您可以从一开始就将base64编码的字符串放在json对象中,这样,在获取对象时便有了预期的输入。 您只需要从json键获取字符串即可。

希望这可以帮助。

这里的问题是您使用以下命令创建了一个PUT请求

Content-Type : application/x-www-form-urlencoded但是您传递了一个字符串作为数据。 因此, body-parser将此字符串视为具有空valuekey ,这就是为什么要获得此控制台日志的原因。

因此,解决方案

let options = {
  headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
};

let requestBody = new URLSearchParams()

requestBody.append('encodedImage',body)


return this._http.put < IUser > (`${BASE_URL}/api/users/${id}/photo`, requestBody, options)

因此,我们说过,我们有一种内容form-urlencoded的内容(这意味着您的所有数据都将作为巨型url查询传递),并且我们传递了一个urlencoded形式(通过URLSearchParams)

请记住URLSearchParams浏览器的兼容性。

如果没有任何限制,请考虑改用multipart/form-data进行文件上传。 除了new URLSearchParams()将是new FormData()之外,上述逻辑将相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM