Skip to main content
下面的每个代码片段都可以在这个程序中单独运行:每次将一个片段粘贴到 main 中,然后运行 goimports(参见运行示例)。

接受的输入

Apps.Create 和 Apps.Commit 接受任意 io.Reader,并以 multipart/form-data 流式传输,绝不会将其读入内存: 上传限制为 100 MB。更大的文件会在本地以 FILE_TOO_LARGE(状态 0)失败:大小已知时在发送任何内容之前失败,否则在流超过 100 MB 时立即失败。上传没有默认截止时间:请通过 ctx 取消上传。

创建应用

Apps.Create(ctx, zip) 会 deploy 一个根目录包含 squarecloud.app 配置文件的 .zip。

向应用提交 commit

Apps.Commit(ctx, appID, r, path, filename) 将文件上传到现有应用中:
  • .zip 会在 path("" 表示应用根目录)处被解压。
  • 其他任何文件会放置在 path/<filename>。
文件名取 filename,否则取 reader 自身的名称(*os.File 的基本名称),否则为 commit.zip。传入 "" 即使用默认值。
commit 不会重启应用。调用 Apps.Restart 以使其生效。

取消上传

被取消的上传会返回 *APIError(ctx 被取消时为 NETWORK_ERROR,截止时间已过时为 TIMEOUT),它可以解包为 context.Canceled 或 context.DeadlineExceeded。

错误

打开文件由你的代码负责,因此 os.Open 的错误永远不会到达 SDK。nil reader 会返回普通错误,而不是 *APIError。完整列表请参见错误。

后续步骤

管理文件

列出、读取、写入、移动和删除应用文件。

上传 API 参考

这些方法背后的 REST 端点。

用 CLI 上传

在终端中完成同样的操作。