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

无法直接连接远程服务器时,如何通过hopen传输zip文件至远程目录?

解决方案

问题根源在于原代码将所有文件内容当作q对象处理(使用set和save),这会破坏非q文件的原始数据;而read0按行读取文本的方式,不仅会损坏二进制文件(如图片、压缩包),甚至会破坏带特殊换行符的文本文件。正确的做法是按字节读取文件原始内容,再在远程端直接写入二进制数据。

修正后的代码

远程端函数(需先在远程实例中定义)

upload:{[bytes; fileName]
    // 拼接远程文件完整路径
    filePath: `$"/tmp/files/", string[fileName];
    // 写入原始二进制数据
    binfile[filePath; bytes]
};

本地端调用代码

// 遍历所有文件,按字节读取后发送至远程
{h(upload; read1 paths[x]; names[x])} each til count names

核心说明

  • read1: 本地用read1读取文件,返回原始字节列表(以0x开头的二进制数据),确保所有类型文件(文本、二进制、q文件)的原始内容完整保留。
  • binfile: 远程用binfile函数直接写入字节数据到文件,避免将非q数据当作q对象处理,彻底解决文件损坏问题。
  • 目录准备: 确保远程端/tmp/files目录存在且有写入权限,若不存在可在远程q中执行system "mkdir -p /tmp/files"创建。

验证方式

  • 文本文件:远程打开后内容与本地完全一致。
  • 二进制文件:发送图片后远程可正常显示,发送zip包后远程解压内容完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 15:11:07