[英]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
将此字符串视为具有空value
的key
,这就是为什么要获得此控制台日志的原因。
因此,解决方案
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.