Javascript 使用NodeJS(Express)将图像转换为Base64
我正在做一个测试,我需要将一个图像转换为base64以存储在我的数据库中 忘了DB吧,我只需要base64作为字符串 这是我的表格:Javascript 使用NodeJS(Express)将图像转换为Base64,javascript,html,node.js,image,base64,Javascript,Html,Node.js,Image,Base64,我正在做一个测试,我需要将一个图像转换为base64以存储在我的数据库中 忘了DB吧,我只需要base64作为字符串 这是我的表格: 地籍 这是我提交表格后的路线: app.post(“/cadastrado)”,(请求、回复)=>{ const{input_nome,input_telefone,input_cpf,input_email,input_file}=req.body; 控制台日志(req); 返回res.json({ nome:input_nome, 电话号码:输入电话号码
地籍
这是我提交表格后的路线:
app.post(“/cadastrado)”,(请求、回复)=>{
const{input_nome,input_telefone,input_cpf,input_email,input_file}=req.body;
控制台日志(req);
返回res.json({
nome:input_nome,
电话号码:输入电话号码,
cpf:input_cpf,
电子邮件:输入电子邮件,
//base64image:input_file.toBase64(我需要类似的东西)
});
});
我在使用字符串输入方面做得很好,比如nome、telefone、cpf和email(PT-BR中的变量)
但是对于input\u文件
当我输入console.log(req.body)时,我得到以下信息:
{
输入名称:“1”,
输入电话:“2”,
输入_cpf:'3',
输入电子邮件:“4”,
输入文件:“levia.jpg”
}
我需要将这个levia.png图像作为字符串转换为base64
我怎么能做到
更新1:
看起来像json中的图像,只是文件名。
可以在客户端和发送到服务器端后进行转换?试试这个
var fs = require('fs');
app.post("/cadastrado", (req, res) => {
const {input_nome, input_telefone, input_cpf, input_email, input_file} = req.body;
console.log(req);
var bitmap = fs.readFileSync(input_file);
var base64File = new Buffer(bitmap).toString('base64');
return res.json({
nome: input_nome,
telefone: input_telefone,
cpf: input_cpf,
email: input_email,
base64image: base64File
});
});
所以我想出了解决问题的办法 有点像我做的。我不知道将来这是否会导致问题,所以我想与大家分享 基本上,我创建了一个
输入
,并在客户端编辑他的值。当然,我不想让Base64代码与糟糕的HTML混为一谈,因此我使用display:none
进行了风格设计。该输入位于表单内部,并发送到我的req.body
片段
index.html页面及其表单:
...
<input type="file" id="input_file" name="input_file" onchange="convBase64()" required />
...
css隐藏带有编码图像的输入:
#input_base64 {
display: none;
}
这个不可见的输入在表单内部。提交表单时,输入值将发送到请求主体。签出,自己将其用于项目。您需要先将输入图像作为画布插入,但遗憾的是,我没有足够的时间深入了解细节。是否需要将文件名作为base64?或者你需要这个名为base64的文件的内容吗?@BronislavRůžička我需要内容图像,就像一张编码为base64@Victorbvn我知道画布,但是对于画布,我需要使用DOM元素。那么NodeJS就不用了。或者,如何将数据传输到另一个javascript文件中的字符串?我的script.js处理html,我的索引处理我的express服务器。@Victorbvn all fine我得到一个错误。标题错误:“TypeError[ERR_INVALID_ARG_TYPE]:“path”参数的类型必须是string或Buffer或URL的实例。未定义已接收”另外,vscode告诉我Buffer在req.body中已被弃用。您是否获得完整的文件对象或只是文件名?嗯,我不知道。我怎么检查这个?如果我使用console.log(req.body),我会得到:{input_nome:'1',input_telefone:'2',input_cpf:'3',input_email:'4',input_file:'levia.jpg'}这个levia.png是qoutes格式的,所以可以是字符串,但我不是舒尔