简体   繁体   English

如何通过Web服务调用将文件保存到我的Node.js服务器

[英]How do I save a file to my nodejs server from web service call

My issue is this: I have made a call to someones web service. 我的问题是:我已经致电某人的Web服务。 I get back the file name, extension and the "bytes". 我得到了文件名,扩展名和“字节”。 Bytes actually come in as an array and at position 0 "Bytes[0]" is the following string: 字节实际上作为数组进入,在位置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///...

The string example above has been cut off for readability. 为了便于阅读,上面的字符串示例已被截断。 How do I take that string and save it as a readable file? 如何获取该字符串并将其另存为可读文件? This case it's a pdf. 这种情况是pdf。

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

You can use the Node.js File System Module to save the received buffer. 您可以使用Node.js文件系统模块保存接收到的缓冲区。
Assuming the encoding of your data is base64: 假设您的数据编码为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(); 

I am using the fs file system here to create and save the file. 我在这里使用fs文件系统来创建和保存文件。 I use a lot of try catch in case anything goes wrong. 如果发生任何问题,我会进行大量尝试。 This example shows how you could pass the data to a function that could then create the file for you. 本示例说明如何将数据传递给可以为您创建文件的函数。

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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从我的NODEJS GAE APP调用外部Web服务 - How do I call external web services from my NODEJS GAE APP 从nodeJS服务器通过带有角度的操作按钮调用Web服务, - call a web service , by an action button with angular , from nodeJS server , 如何从我的 nodejs 服务器中删除文件 - How can i delete a file from my nodejs server 如何使用服务器域名从本地计算机访问我的nodejs Web服务器? - How can I access my nodejs web server from my local computer using the server domain name? 如何将Node.js安装为资产上传Web服务以与我的Wordpress设置一起使用 - How do I install nodejs as an asset upload web service to work with my wordpress setup 如何保存从 NextJS 客户端发送的图像到我的 NodeJS 服务器? - How can I save an image sent from my NextJS client to my NodeJS server? 如何在NodeJs中做Web服务器以对API REST进行REST调用? - How to do a Web Server in NodeJs that makes a REST call to API REST? 如何将Node.js中的文件上传到服务器? - How do I upload file in nodejs to a server? 如何使用我的 NODEJS 服务器加载我的 HTML 和 CSS 文件? - How do I load my HTML and CSS file with my NODEJS server? 如何从Node.js文件调用Web3js函数 - How to call Web3js function from Nodejs file
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM