uni-app SFTP/FTP Sync 功能问题多 建议完善

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app SFTP/FTP Sync 功能问题多 建议完善

SFTP/FTP Sync 问题很多,建议完善。 FTP一直用不了。

4 回复

提供下错误或运行日志(菜单【帮助】【查看运行日志】)
也可以添加下HBuilderX官方qq群 750929504, 进群at HBuilderX-管理员


经常性的上传失败,保存上传有时候也会失效,没有外部工具反应那么快速

2021-09-09 21:36:39.496 [WARNING:] QObject::connect: No such signal ThemeEdit::customEditorBgChanged(QString)
2021-09-09 21:37:04.073 [WARNING:] [PluginHost] error: “{“code”:-32603,“message”:“Request treeview/getChildren failed with message: Too many connections (10) from this IP”}”
2021-09-09 21:37:06.732 [WARNING:] [PluginHost] error: “{“code”:-32603,“message”:“Request treeview/getChildren failed with message: Too many connections (10) from this IP”}”
2021-09-09 21:37:09.399 [WARNING:] [PluginHost] error: “{“code”:-32603,“message”:“Request treeview/getChildren failed with message: Too many connections (10) from this IP”}”

针对您提到的uni-app中SFTP/FTP Sync功能存在的问题,我理解这可能对开发者的日常工作造成了不便。虽然直接修改uni-app的源代码或核心功能超出了我们的常规操作范围,但我可以提供一个基于Node.js的SFTP同步脚本示例,作为可能的解决方案或灵感来源。这个脚本可以帮助您实现文件的SFTP同步,您可以根据需求将其集成到您的开发流程中。

以下是一个使用ssh2-sftp-client库的Node.js脚本示例,用于将本地目录同步到远程SFTP服务器:

const SftpClient = require('ssh2-sftp-client');
const path = require('path');
const fs = require('fs');

async function syncLocalToRemote(localDir, remoteDir, sftp) {
    try {
        const localFiles = fs.readdirSync(localDir, { withFileTypes: true });

        for (const file of localFiles) {
            const localFilePath = path.join(localDir, file.name);
            const remoteFilePath = path.join(remoteDir, file.name);

            if (file.isDirectory()) {
                await sftp.mkdir(remoteFilePath, true); // Recursively create dir
                await syncLocalToRemote(localFilePath, remoteFilePath, sftp);
            } else {
                await sftp.put(localFilePath, remoteFilePath);
            }
        }
    } catch (err) {
        console.error('Error syncing local to remote:', err);
    }
}

async function main() {
    const sftp = new SftpClient();
    try {
        await sftp.connect({
            host: 'your.sftp.server',
            port: '22',
            username: 'your-username',
            password: 'your-password' // Or use privateKey for key-based auth
        });

        const localDir = '/path/to/local/directory';
        const remoteDir = '/path/to/remote/directory';

        await syncLocalToRemote(localDir, remoteDir, sftp);
    } catch (err) {
        console.error('Error connecting or syncing:', err);
    } finally {
        await sftp.end();
    }
}

main();

注意

  1. 确保已安装ssh2-sftp-client库,可以通过npm install ssh2-sftp-client安装。
  2. 根据您的SFTP服务器配置调整连接参数。
  3. 脚本中未包含删除远程服务器上不存在于本地的文件的逻辑,如需实现双向同步,需额外编写代码。
  4. 出于安全考虑,建议使用密钥认证而非明文密码。

虽然这不是直接在uni-app中完善SFTP/FTP Sync功能的代码,但它提供了一个可行的替代方案,帮助您实现文件同步需求。希望这对您有所帮助!

回到顶部