Node.js nodejs base64到blob的转换
Iam在react JS(react网络摄像头)中捕获网络摄像头屏幕截图。屏幕截图采用base64编码字符串的形式。我正在将base64字符串发送到nodejs,我想将base64字符串转换为.jpeg文件,以便可以保存在Azure Blob存储中。Node.js nodejs base64到blob的转换,node.js,reactjs,blob,Node.js,Reactjs,Blob,Iam在react JS(react网络摄像头)中捕获网络摄像头屏幕截图。屏幕截图采用base64编码字符串的形式。我正在将base64字符串发送到nodejs,我想将base64字符串转换为.jpeg文件,以便可以保存在Azure Blob存储中。 是否有任何方法将base64字符串转换为.jpeg文件。您可以将base64字符串转换为缓冲区,然后尝试将其存储到azure var base64String = "....."; // your base64 string var bufferV
是否有任何方法将base64字符串转换为.jpeg文件。您可以将base64字符串转换为缓冲区,然后尝试将其存储到azure
var base64String = "....."; // your base64 string
var bufferValue = Buffer.from(base64String,"base64");
试试这个:
嗨,我使用这个功能
public b64toBlob = (b64Data: string = '', sliceSize?: number) => {
sliceSize = sliceSize || 512;
if ( b64Data !== null) {
let block = b64Data.split(';');
let dataType = block[0].split(':')[1];
let realData = block[1].split(',')[1];
let filename = this.makeid() + '.' + dataType.split('/')[1];
let byteCharacters = atob(realData);
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
let blob = new Blob(byteArrays, {type: dataType});
return blob ;
} else {
return '';
}
}
public b64toBlob=(b64Data:string='',sliceSize?:number)=>{
切片大小=切片大小| | 512;
if(b64Data!==null){
let block=b64Data.split(“;”);
让数据类型=块[0]。拆分(“:”)[1];
设realData=block[1]。拆分(',')[1];
让filename=this.makeid()+'.+dataType.split('/')[1];
let byteCharacters=atob(realData);
let ByteArray=[];
for(让offset=0;offset
我用了这个,它很管用。
下面是服务器端代码(NodeJS)
var contentType='image/jpeg';
让base64String=req.body.img;
让base64Image=base64String.split(';base64').pop();
让date=date.now();
fs.writeFile(`./uploads/${date}.jpeg`,base64Image,{encoding:'base64'},函数(err){
log('File created');
sourceFilePath=path.resolve(`./uploads/${date}.jpeg`);
blobName=path.basename(sourceFilePath,path.extname(sourceFilePath));
//log(sourceFilePath);
blobService.createBlockBlobFromLocalFile(containerName、blobName、sourceFilePath,err=>{
如果(错误){
控制台日志(err);
}
否则{
//解析({message:`Upload of'${blobName}'complete`});
控制台日志(“上传”)
}
});
可能使用atob()
?两个最重要的答案都帮助了我:
public b64toBlob = (b64Data: string = '', sliceSize?: number) => {
sliceSize = sliceSize || 512;
if ( b64Data !== null) {
let block = b64Data.split(';');
let dataType = block[0].split(':')[1];
let realData = block[1].split(',')[1];
let filename = this.makeid() + '.' + dataType.split('/')[1];
let byteCharacters = atob(realData);
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
let blob = new Blob(byteArrays, {type: dataType});
return blob ;
} else {
return '';
}
}