#!/bin/bash # 文件传输服务便捷函数 # 使用方法: source fileshare_functions.sh # 默认服务器地址 FILESHARE_SERVER="${FILESHARE_SERVER:-http://localhost:8000}" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # 显示帮助信息 fileshare_help() { echo -e "${BLUE}📡 文件传输服务便捷函数${NC}" echo "==================================" echo echo -e "${YELLOW}📤 上传文件:${NC}" echo " upload <文件路径>" echo " 示例: upload photo.jpg" echo echo -e "${YELLOW}📝 分享文本:${NC}" echo " share_text <文本内容>" echo " 示例: share_text \"Hello World!\"" echo echo -e "${YELLOW}⬇️ 下载文件:${NC}" echo " download <分享码>" echo " 示例: download AB12CD34" echo echo -e "${YELLOW}ℹ️ 查看文件信息:${NC}" echo " info <分享码>" echo " 示例: info AB12CD34" echo echo -e "${YELLOW}📊 列出所有分享:${NC}" echo " list_shares" echo echo -e "${YELLOW}🔧 设置服务器地址:${NC}" echo " set_server <地址>" echo " 示例: set_server https://your-domain.com" echo echo -e "${BLUE}当前服务器: ${FILESHARE_SERVER}${NC}" } # 上传文件 upload() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请指定要上传的文件${NC}" echo "用法: upload <文件路径>" return 1 fi local file="$1" if [ ! -f "$file" ]; then echo -e "${RED}❌ 文件不存在: $file${NC}" return 1 fi echo -e "${BLUE}📤 上传文件: $file${NC}" local result=$(curl -s -X POST -F "file=@$file" "$FILESHARE_SERVER/api/upload") if echo "$result" | grep -q '"code"'; then local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4) echo -e "${GREEN}✅ 上传成功!${NC}" echo -e "${YELLOW}分享码: $code${NC}" echo -e "${BLUE}下载命令: download $code${NC}" else echo -e "${RED}❌ 上传失败${NC}" echo "$result" return 1 fi } # 分享文本 share_text() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请提供要分享的文本内容${NC}" echo "用法: share_text \"文本内容\"" return 1 fi local content="$*" echo -e "${BLUE}📝 分享文本...${NC}" local result=$(curl -s -X POST --data "$content" "$FILESHARE_SERVER/api/text") if echo "$result" | grep -q '"code"'; then local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4) echo -e "${GREEN}✅ 分享成功!${NC}" echo -e "${YELLOW}分享码: $code${NC}" echo -e "${BLUE}下载命令: download $code${NC}" else echo -e "${RED}❌ 分享失败${NC}" echo "$result" return 1 fi } # 下载文件 download() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请提供分享码${NC}" echo "用法: download <分享码>" return 1 fi local code="$1" echo -e "${BLUE}⬇️ 下载文件: $code${NC}" # 先检查文件信息 local info_result=$(curl -s "$FILESHARE_SERVER/api/info/$code") if echo "$info_result" | grep -q '"filename"'; then local filename=$(echo "$info_result" | grep -o '"filename":"[^"]*"' | cut -d'"' -f4) echo -e "${BLUE}文件名: $filename${NC}" # 下载文件 if curl -f -O -J "$FILESHARE_SERVER/api/download/$code"; then echo -e "${GREEN}✅ 下载成功!${NC}" else echo -e "${RED}❌ 下载失败${NC}" return 1 fi else echo -e "${RED}❌ 分享码不存在或已过期${NC}" return 1 fi } # 查看文件信息 info() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请提供分享码${NC}" echo "用法: info <分享码>" return 1 fi local code="$1" echo -e "${BLUE}ℹ️ 查看文件信息: $code${NC}" local result=$(curl -s "$FILESHARE_SERVER/api/info/$code") if echo "$result" | grep -q '"filename"'; then echo -e "${GREEN}✅ 文件信息:${NC}" echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result" else echo -e "${RED}❌ 分享码不存在或已过期${NC}" return 1 fi } # 列出所有分享 list_shares() { echo -e "${BLUE}📊 获取分享列表...${NC}" local result=$(curl -s "$FILESHARE_SERVER/api/shares") if echo "$result" | grep -q '"total"'; then echo -e "${GREEN}✅ 分享列表:${NC}" echo "$result" | python3 -m json.tool 2>/dev/null || echo "$result" else echo -e "${RED}❌ 获取列表失败${NC}" echo "$result" return 1 fi } # 设置服务器地址 set_server() { if [ $# -eq 0 ]; then echo -e "${YELLOW}当前服务器: $FILESHARE_SERVER${NC}" echo "用法: set_server <服务器地址>" return 0 fi FILESHARE_SERVER="$1" echo -e "${GREEN}✅ 服务器地址已设置为: $FILESHARE_SERVER${NC}" # 测试连接 if curl -s "$FILESHARE_SERVER/api" > /dev/null; then echo -e "${GREEN}✅ 服务器连接正常${NC}" else echo -e "${YELLOW}⚠️ 无法连接到服务器,请检查地址是否正确${NC}" fi } # 从文件分享文本 share_file() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请指定要分享的文本文件${NC}" echo "用法: share_file <文件路径>" return 1 fi local file="$1" if [ ! -f "$file" ]; then echo -e "${RED}❌ 文件不存在: $file${NC}" return 1 fi echo -e "${BLUE}📝 分享文件内容: $file${NC}" local result=$(curl -s -X POST --data "@$file" "$FILESHARE_SERVER/api/text") if echo "$result" | grep -q '"code"'; then local code=$(echo "$result" | grep -o '"code":"[^"]*"' | cut -d'"' -f4) echo -e "${GREEN}✅ 分享成功!${NC}" echo -e "${YELLOW}分享码: $code${NC}" echo -e "${BLUE}下载命令: download $code${NC}" else echo -e "${RED}❌ 分享失败${NC}" echo "$result" return 1 fi } # 批量上传 batch_upload() { if [ $# -eq 0 ]; then echo -e "${RED}❌ 请指定文件或目录${NC}" echo "用法: batch_upload <文件1> <文件2> ... 或 batch_upload <目录>/*" return 1 fi echo -e "${BLUE}📤 批量上传文件...${NC}" local success_count=0 local total_count=0 for file in "$@"; do if [ -f "$file" ]; then total_count=$((total_count + 1)) echo -e "\n${BLUE}上传: $(basename "$file")${NC}" if upload "$file"; then success_count=$((success_count + 1)) fi fi done echo -e "\n${GREEN}✅ 批量上传完成: $success_count/$total_count 成功${NC}" } # 自动显示帮助 echo -e "${GREEN}✅ 文件传输服务便捷函数已加载${NC}" echo -e "${BLUE}输入 fileshare_help 查看使用帮助${NC}" echo -e "${YELLOW}服务器地址: $FILESHARE_SERVER${NC}" # 创建别名 alias fs_help='fileshare_help' alias fs_upload='upload' alias fs_share='share_text' alias fs_download='download' alias fs_info='info' alias fs_list='list_shares' alias fs_server='set_server'