#!/bin/sh
|
# 端口配置-保存
|
#
|
echo -en "Content-type: text/html; charset=utf-8\n\n"
|
#*****************************************************
|
source ../bin/env.sh
|
db="../bin/db"
|
jsoner="../bin/jsoner"
|
|
read content
|
|
filename=`$jsoner "$content" name`
|
|
|
TARGET_FILE="/work/data/temp/$filename"
|
TIMEOUT=40
|
START_TIME=$(date +%s)
|
RESULT="pending" # 初始状态
|
|
while [ "$RESULT" = "pending" ]; do
|
CURRENT_TIME=$(date +%s)
|
ELAPSED=$((CURRENT_TIME - START_TIME))
|
echo $ELAPSED > log
|
# 超时判断
|
if [ $ELAPSED -ge $TIMEOUT ]; then
|
RESULT="error_timeout"
|
break
|
fi
|
|
# 检查cgi文件是否存在(动态匹配)
|
CGI_FILES=$(ls /work/data/temp/cgi* 2>/dev/null)
|
if [ -z "$CGI_FILES" ]; then
|
RESULT="error_no_cgi"
|
break
|
fi
|
|
# 检查目标文件存在性
|
if [ -f "$TARGET_FILE" ]; then
|
# 获取第一个cgi文件(允许存在多个)
|
CGI_FILE=$(echo "$CGI_FILES" | head -n1)
|
|
#获取文件大小
|
TARGET_SIZE=$(stat -c %s "$TARGET_FILE" 2>/dev/null)
|
CGI_SIZE=$(stat -c %s "$CGI_FILE" 2>/dev/null)
|
|
# 有效性验证
|
if [ -z "$TARGET_SIZE" ] || [ -z "$CGI_SIZE" ]; then
|
sleep 0.2
|
continue
|
fi
|
|
# 核心判断逻辑
|
if [ "$TARGET_SIZE" -eq "$CGI_SIZE" ]; then
|
RESULT="success"
|
fi
|
fi
|
|
sleep 0.3 # 精确控制检测间隔
|
done
|
|
# 结果处理
|
case $RESULT in
|
"success")
|
mv /work/data/temp/$filename /work/data/
|
echo "{\"code\": \"success\"}"
|
break
|
;;
|
"error_timeout")
|
#echo "错误:未在30秒内检测到有效文件"
|
echo "{\"code\": \"error\",\"msg\":\"timeout\"}"
|
break
|
;;
|
"error_no_cgi")
|
#echo "错误:未找到cgi开头的文件"
|
echo "{\"code\": \"error\",\"msg\":\"no_cgi\"}"
|
break
|
;;
|
*)
|
#echo "未知错误状态"
|
echo "{\"code\": \"error\",\"msg\":\"unknown\"}"
|
break
|
;;
|
esac
|
|
|
rm /work/data/temp/*
|
|
#echo "$content" > log
|
#echo "$filename" >> log
|