You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在NodeJS中通过FTP上传PDF缓冲区内容到服务器

你可以借助Node.js的FTP客户端包完成Buffer的直传,不需要先把PDF写入本地磁盘,直接把生成的Buffer上传到FTP服务器即可。

实现步骤

  1. 安装常用的FTP客户端依赖:
    npm install basic-ftp

  2. 调整你的代码,在获取到pdfBuffer的位置新增FTP上传逻辑即可,完整修改后的代码如下:

const html_to_pdf = require('html-pdf-node');
const ftp = require('basic-ftp');
const { Readable } = require('stream');

const generatePDF = async () => {
   // 测试用HTML文件
   let content = `
      <html>
         <head>
            <title>Test Application</title>
            <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
            <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
            <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
         </head>
         <body>
            <div class="container">
               <h2>Just a Test</h2>
            </div>
         </body>
      </html>
   `;
    
    // 生成PDF
    let options = { 
        format: 'letter',
        margin: {
            right: '40px',
            left: '40px'
        } 
    };
    let file = { content };
    try {
        const pdfBuffer = await html_to_pdf.generatePdf(file, options);
        console.log('PDF生成完成,开始上传FTP');
        // 初始化FTP客户端
        const client = new ftp.Client();
        // 开启调试日志可选,生产环境可以关闭
        // client.ftp.verbose = true;
        // 连接FTP服务器,替换为你自己的服务器信息
        await client.access({
            host: "你的FTP服务器地址",
            user: "你的FTP用户名",
            password: "你的FTP密码",
            // 如果是FTP显式TLS连接可以加secure: true,普通FTP不用加
        });
        // 可选:切换到服务器上指定的存储目录
        // await client.cd('/path/to/your/pdf/storage');
        // 直接把Buffer上传为test.pdf
        await client.uploadFrom(Readable.from(pdfBuffer), 'test.pdf');
        console.log('PDF上传完成');
        // 关闭连接
        client.close();
    } catch (err) {
        console.error('操作失败', err);
    }
}

注意事项

  • 如果你的服务器用的是SFTP而非FTP协议,替换使用ssh2-sftp-client包即可,上传逻辑基本一致
  • 生产环境不要硬编码FTP账号密码等敏感信息,建议通过环境变量读取
  • 你可以根据需求修改上传后的文件名和存储路径

内容的提问来源于stack exchange,提问作者myTest532 myTest532

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:06:06