Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用NodeJS(Express)将图像转换为Base64_Javascript_Html_Node.js_Image_Base64 - Fatal编程技术网

Javascript 使用NodeJS(Express)将图像转换为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, 电话号码:输入电话号码

我正在做一个测试,我需要将一个图像转换为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,
电话号码:输入电话号码,
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格式的,所以可以是字符串,但我不是舒尔