Back to skills
extension
Category: OtherNo API key required

Gofile文件上传 【资料分享+无限空间+无需配置+无需注册账号】

上传本地文件到 Gofile 网盘,自动生成公开分享链接。当用户提到上传文件到 Gofile、分享文件、文件托管时使用。

personAuthor: u_a7f01181hubenterprise

Gofile 网盘上传【文件分享技能】

本技能可将本地文件一键上传至 Gofile 网盘,上传完成后自动生成公开分享链接。 无需手动打开网页操作,无需注册网盘账号,适合临时文件分享、轻量文件管理场景。

适用场景

  • 非常适合临时文件分享,方便快捷
  • 支持任意文件格式,图片可预览,音视频文件可播放
  • 完美适配 Hermes Agent,上传速度快,支持断点续传

前置条件

  • Hermes Agent 或者其他的 AI软件都可以
  • Python 3 及 requests 库(如未安装,执行 pip install requests

上传流程

第一步:获取用户提供的信息

从用户对话中提取:

  1. 本地文件路径(必须):文件的完整绝对路径
  2. 文件夹编号(可选):如用户指定则传入,不指定则自动新建文件夹

第二步:上传文件

import requests, os, mimetypes, json

def gofile_upload(file_path, folder_id=None):
    if not os.path.isfile(file_path):
        return {"success": False, "error": f"文件不存在,请检查路径: {file_path}"}

    # 获取可用上传服务器
    srv = requests.get("https://api.gofile.io/servers", timeout=30).json()
    if srv.get("status") != "ok" or not srv.get("data", {}).get("servers"):
        return {"success": False, "error": "无法获取上传服务器,请稍后重试"}
    server = srv["data"]["servers"][0]["name"]

    # 上传文件
    mime = mimetypes.guess_type(file_path)[0] or "application/octet-stream"
    data = {}
    if folder_id:
        data["folderId"] = folder_id

    try:
        with open(file_path, "rb") as f:
            resp = requests.post(
                f"https://{server}.gofile.io/contents/uploadfile",
                data=data,
                files={"file": (os.path.basename(file_path), f, mime)},
                timeout=300
            ).json()

        if resp.get("status") == "ok":
            d = resp["data"]
            return {
                "success": True,
                "文件名": os.path.basename(file_path),
                "文件大小": os.path.getsize(file_path),
                "文件链接": d.get("downloadPage"),
                "文件夹ID": d.get("parentFolder"),
                "文件夹链接": f"https://gofile.io/d/{d.get('parentFolder', '')}"
            }
        return {"success": False, "error": f"上传失败: {resp.get('status', '未知错误')}"}

    except requests.exceptions.Timeout:
        return {"success": False, "error": "上传超时,文件较大或网络不稳定,请重试"}
    except requests.exceptions.ConnectionError:
        return {"success": False, "error": "网络连接失败,请检查网络后重试"}
    except Exception as e:
        return {"success": False, "error": f"上传出错: {str(e)}"}

result = gofile_upload(FILE_PATH, folder_id=FOLDER_ID)
print(json.dumps(result, indent=2, ensure_ascii=False))

执行前将 FILE_PATH 替换为用户提供的文件路径,FOLDER_ID 替换为文件夹编号(未指定则传 None)。

第三步:反馈结果

上传成功后,向用户展示:

  • 文件链接:点击可直接打开、下载该文件,支持分享给他人
  • 文件夹链接:点击可查看文件夹内所有已上传文件

上传失败时,告知用户具体错误原因(文件不存在、网络超时等),根据提示调整后重新操作。

使用示例

基础上传(自动新建文件夹):

适合单次上传、无需归类的场景,直接告知文件路径即可。

帮我把本地文件 C:\Users\admin\Documents\文档.pdf 上传到 Gofile 网盘

帮我把 /home/user/照片.jpg 上传到 Gofile

指定文件夹上传:

需要将文件归类到已有文件夹时,补充文件夹编号。

帮我把本地图片 /home/user/照片.jpg 上传到 Gofile 网盘 AA9Gj4 文件夹里

把 C:\报告.docx 传到 Gofile 的 BB2Xk9 文件夹

注意事项

  1. 文件路径必须使用完整的本地绝对路径,确保能够正常读取
  2. 连续 10 天无人访问的文件会被系统自动归档,重要文件请做好本地备份
  3. 网盘服务器为海外节点,大文件上传速度可能受网络影响,建议耐心等待
  4. 请勿上传隐私、涉密文件并公开分享,避免信息泄露
  5. 目前每月有固定100GB流量额度,日常使用足够,请合理控制