Node.js 如何从web服务调用将文件保存到nodejs服务器

Node.js 如何从web服务调用将文件保存到nodejs服务器,node.js,pdf,fs,Node.js,Pdf,Fs,我的问题是: 我打电话给某人的网络服务。我得到了文件名、扩展名和“字节”。字节实际上以数组的形式出现,在位置0“Bytes[0]”处是以下字符串: JVBERi0xLjYKJeLjz9MKMSAwIG9iago8PC9EZWNvZGVQYXJtczw8L0sgLTEvQ29sdW1ucyAyNTUwL1Jvd3MgMzMwMD4+L1R5cGUvWE9iamVjdC9CaXRzUGVyQ29tcG9uZW50IDEvU3VidHlwZS9JbWFnZS9XaWR0aCAyNTUwL0NvbG9y

我的问题是: 我打电话给某人的网络服务。我得到了文件名、扩展名和“字节”。字节实际上以数组的形式出现,在位置0“Bytes[0]”处是以下字符串:

JVBERi0xLjYKJeLjz9MKMSAwIG9iago8PC9EZWNvZGVQYXJtczw8L0sgLTEvQ29sdW1ucyAyNTUwL1Jvd3MgMzMwMD4+L1R5cGUvWE9iamVjdC9CaXRzUGVyQ29tcG9uZW50IDEvU3VidHlwZS9JbWFnZS9XaWR0aCAyNTUwL0NvbG9yU3BhY2UvRGV2aWNlR3JheS9GaWx0ZXIvQ0NJVFRGYXhEZWNvZGUvTGVuZ3RoIDI4Mzc0L0hlaWdodCAzMzAwPj5zdHJlYW0K////////y2IZ+M8+zOPM/HzLhzkT1NAjCCoEY0CMJNAjCR4c8HigRhBAi1iZ0eGth61tHhraTFbraRaYgQ8zMFyGyGM8ZQZDI8MjMI8M6enp9W6enp+sadIMIIEYwy/ggU0wwgwjWzSBUmwWOt/rY63fraTVNu6C7R7pN6+v///20v6I70vdBaPjptK8HUQfX9/17D/TMet+l06T//0v3/S9v+r98V0nH///7Ff+Ed3/v16X9XX/S/KP0vSb//W88ksdW18lzBEJVpPXT0k9b71///...
为了便于阅读,上面的字符串示例已被删除。 如何获取该字符串并将其保存为可读文件? 这个案子是pdf格式的

let pdfBytes = '{String shown above in example}'

您可以使用Node.js文件系统模块保存收到的缓冲区。
假设数据的编码为base64:

const fs = require('fs');

let pdfBytes = 'JVBERi0xLjYKJeLjz9...'

let writeStream = fs.createWriteStream('filename.pdf');

writeStream.write(pdfBytes, 'base64');

writeStream.on('finish', () => {  
    console.log('saved');
});

writeStream.end(); 

您可以使用Node.js文件系统模块保存收到的缓冲区。
假设数据的编码为base64:

const fs = require('fs');

let pdfBytes = 'JVBERi0xLjYKJeLjz9...'

let writeStream = fs.createWriteStream('filename.pdf');

writeStream.write(pdfBytes, 'base64');

writeStream.on('finish', () => {  
    console.log('saved');
});

writeStream.end(); 

我在这里使用fs文件系统来创建和保存文件。我用了很多试捕法以防出差错。此示例显示如何将数据传递给函数,然后该函数可以为您创建文件

const util = require('util');
const fs = require('fs');

const fsOpen = util.promisify(fs.open);
const fsWriteFile = util.promisify(fs.writeFile);
const fsClose = util.promisify(fs.close);

function saveNewFile(path, data) {
  return new Promise((async (resolve, reject) => {
    let fileToCreate;

    // Open the file for writing
    try {
      fileToCreate = await fsOpen(path, 'wx');
    } catch (err) {
      reject('Could not create new file, it may already exist');
      return;
    }

    // Write the new data to the file
    try {
      await fsWriteFile(fileToCreate, data);
    } catch (err) {
      reject('Error writing to new file');
      return;
    }

    // Close the file
    try {
      await fsClose(fileToCreate);
    } catch (err) {
      reject('Error closing new file');
      return;
    }

    resolve('File created');
  }));
};

// Data we want to use to create the file.
let pdfBytes = 'JVBERi0xLjYKJeLj...'
saveNewFile('./filename.pdf', pdfBytes);

我在这里使用fs文件系统来创建和保存文件。我用了很多试捕法以防出差错。此示例显示如何将数据传递给函数,然后该函数可以为您创建文件

const util = require('util');
const fs = require('fs');

const fsOpen = util.promisify(fs.open);
const fsWriteFile = util.promisify(fs.writeFile);
const fsClose = util.promisify(fs.close);

function saveNewFile(path, data) {
  return new Promise((async (resolve, reject) => {
    let fileToCreate;

    // Open the file for writing
    try {
      fileToCreate = await fsOpen(path, 'wx');
    } catch (err) {
      reject('Could not create new file, it may already exist');
      return;
    }

    // Write the new data to the file
    try {
      await fsWriteFile(fileToCreate, data);
    } catch (err) {
      reject('Error writing to new file');
      return;
    }

    // Close the file
    try {
      await fsClose(fileToCreate);
    } catch (err) {
      reject('Error closing new file');
      return;
    }

    resolve('File created');
  }));
};

// Data we want to use to create the file.
let pdfBytes = 'JVBERi0xLjYKJeLj...'
saveNewFile('./filename.pdf', pdfBytes);

共享你的代码因为我不知道如何开始编写,所以还没有任何真正的代码。共享你的代码因为我不知道如何开始编写,所以还没有任何真正的代码。你应该解释你在做什么,以及代码缺少什么问题。@Superlokkus记录。虽然没有任何代码,但你是很棒的Mexo。我也在尝试同样的事情,只是缺少了。write()上的base64编码。你应该解释一下你在做什么,以及代码中缺少了什么问题。@Superlokkus注意到了。虽然没有任何代码,但你是很棒的Mexo。我尝试了同样的事情,只是在.write()上缺少base64编码