MCPcopy Index your code
hub / github.com/Illusionna/LocalTransfer

github.com/Illusionna/LocalTransfer @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
227 symbols 430 edges 27 files 27 documented · 12%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Go Local Transfer

一个快速上手的跨平台 HTTP 文件服务器 | @Illusionna

截图

<img src="https://github.com/Illusionna/LocalTransfer/raw/main/images/screenshot.png" width="100%" height="100%">

简介

Go Local Transfer 是一个 HTTP 文件服务器,具备图形化界面,支持 Windows、Linux、macOS 三种操作系统,可用于局域网(或互联网)文件传输。

使用

Releases 发行版下载相应的压缩包,解压后得到 GoTransfer 和 goer 两个程序。GoTransfer 是 GUI 图形化软件,goer 是 CLI 终端命令行程序,可根据自己的需要执行其中任意一个即可。

<img src="https://github.com/Illusionna/LocalTransfer/raw/main/images/app.png" width="100%" height="100%">

双击 GoTransfer 软件

<img src="https://github.com/Illusionna/LocalTransfer/raw/main/images/GUI.png" width="75%" height="75%">

终端执行 goer 程序

<img src="https://github.com/Illusionna/LocalTransfer/raw/main/images/cli.png" width="75%" height="75%">

编译

运行环境:Golang 1.23.0、Wails 2.10.0、Nodejs 20.12.2、64 位操作系统

下载仓库代码:

git clone https://github.com/Illusionna/LocalTransfer.git

仓库代码默认构建 GUI 图形化软件,在终端依次执行指令:

go mod init GoTransfer
go mod tidy
wails build

输出的二进制可执行程序在 ./build/bin 目录。

除此之外,若想构建 CLI 命令行程序,先删除 gui.go 文件(或重命名为 gui.py emmmm 随便一个非 go 文件的名字就行啦),然后创建一个名为 cli.go 的文件,并将如下代码粘贴进去:

package main

import (
    "os"
    "fmt"
    "flag"
    "net/http"
    "path/filepath"
)

var __HOST_IPv4 = flag.String("ip", GetLocalIPv4Addresses(), "")
var __HOST_PORT = flag.String("port", "8888", "")
var __SHARE_DIR = flag.String("share", ".", "")
var __UPLOAD_DIR = flag.String("save", *__SHARE_DIR, "")
var __MAX_SIZE = flag.String("max", "1.2 GB", "")
var __LOGIN_PASSWORD = flag.String("login", "", "")
var __VERSION = flag.Bool("version", false, "")

func main() {
    flag.Usage = func() {
        fmt.Printf("命令行示例\n")
        fmt.Printf("    e.g. 共享文件夹, 且限制最大文件大小, 程序放行在主机端口\n")
        fmt.Printf(`        >>> %s -share "C:\Users\Zolio Marling\Desktop" -max "36 MB" -port 443`, filepath.Base(os.Args[0]))
        fmt.Printf("\n\n")
        fmt.Printf("全部参数解释\n")
        fmt.Printf("    -version\n        查看软件版本及其他信息\n")
        fmt.Printf("    -ip (string)\n        服务器 IPv4 地址 (默认 \"%s\")\n", *__HOST_IPv4)
        fmt.Printf("    -port (string)\n        服务运行的端口号 (默认 \"%s\")\n", *__HOST_PORT)
        fmt.Printf("    -share (string)\n        想要共享出去的文件夹路径 (默认 \"%s\" 当前工作目录)\n", *__SHARE_DIR)
        fmt.Printf("    -save (string)\n        上传的文件保存到的位置 (默认 \"%s\" 与共享目录路径相同)\n", *__UPLOAD_DIR)
        fmt.Printf("    -max (string)\n        限制上传文件的最大尺寸 (默认 \"%s\")\n", *__MAX_SIZE)
        fmt.Printf("    -login (string)\n        前端登录密码 (默认 \"%s\" 为空不需要登录)\n", *__LOGIN_PASSWORD)
    }

    flag.Parse()

    if *__VERSION {
        fmt.Println("Go Local Transfer App v5")
        fmt.Println("协议: MIT License")
        fmt.Println("作者: @Illusionna")
        fmt.Println("隶属: Jarvis Engineering Tool")
        fmt.Println("仓库: https://github.com/Illusionna/LocalTransfer")
        fmt.Println("主页: https://orzzz.net")
        fmt.Println("邮箱: www@orzzz.net")
        os.Exit(0)
    }

    HOST_IPv4 = *__HOST_IPv4
    HOST_PORT = *__HOST_PORT
    SHARE_DIR = *__SHARE_DIR
    UPLOAD_DIR = *__UPLOAD_DIR
    MAX_SIZE = *__MAX_SIZE
    LOGIN_PASSWORD = *__LOGIN_PASSWORD

    fmt.Printf("共享目录: \"%s\"\n", SHARE_DIR)
    fmt.Printf("保存位置: \"%s\"\n", UPLOAD_DIR)
    fmt.Printf("限制最大文件大小: %s\n", ConvertStorageUnit(ParseStorageUnit(MAX_SIZE)))
    if LOGIN_PASSWORD != "" { fmt.Printf("登录密码: \"%s\"\n", LOGIN_PASSWORD) }
    fmt.Println("")
    fmt.Printf("本地回环 --> http://localhost:%s\n", HOST_PORT)
    fmt.Printf("局域网地址 --> http://%s:%s\n", HOST_IPv4, HOST_PORT)
    fmt.Println("")
    fmt.Printf("查看帮助文档 >>> %s --help\n", filepath.Base(os.Args[0]))
    fmt.Printf("按住 CTRL + C 终止进程...\n\n")

    RegisterRouter()

    http.ListenAndServe(":" + HOST_PORT, nil)
}

然后在终端执行指令即可构建 CLI 命令行工具。

go build -o goer.exe -ldflags="-s -w" -trimpath cli.go types.go handler.go utils.go

趋势

Star History Chart

开源致谢

谢谢我就好啦~ 如果该项目帮助到你,欢迎给我点赞!🤭

Extension points exported contracts — how you extend this code

Position (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts
Size (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts
Screen (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts
EnvironmentInfo (Interface)
(no doc)
frontend/wailsjs/runtime/runtime.d.ts

Core symbols most depended-on inside this repo

UpdateFileList
called by 12
UI/assets/js/display-file-list.js
AuthorizeStatusMiddleware
called by 9
utils.go
AccessSuperPath
called by 8
utils.go
AuthorizeUser
called by 7
utils.go
ConvertStorageUnit
called by 4
utils.go
UpdateShareHandler
called by 3
utils.go
TimeSwitchTongue
called by 3
utils.go
showNotification
called by 3
frontend/src/main.js

Shape

Function 209
Struct 9
Method 5
Interface 4

Languages

TypeScript74%
Go26%

Modules by API surface

docs/assets/js/jquery-1.11.3.min.js75 symbols
frontend/wailsjs/runtime/runtime.js52 symbols
utils.go26 symbols
handler.go17 symbols
types.go8 symbols
app.go6 symbols
frontend/wailsjs/runtime/runtime.d.ts4 symbols
frontend/src/main.js4 symbols
UI/assets/js/upload-file.js4 symbols
UI/assets/js/display-file-list.js4 symbols
frontend/wailsjs/go/main/APP.js3 symbols
UI/assets/js/upload-file-copy.js3 symbols

For agents

$ claude mcp add LocalTransfer \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact