关于seafile-server 7.1.5 和 8.0.3 api上传文件bug说明
作者:互联网
需要技术支持加QQ:1016401546,说明来意
问题已解决,但是因为本人找过seafile官方群和官方技术支持客服,均未得到切确的答复和解决方案,并且新版本更新之后接口文档等一写文档没有及时更新。
故本人花费了很长时间来排查这个问题并解决了。
如需要本人技术支持的加QQ:1016401546。但是为有偿解决,费用不高,需要则加。
该问题不知道是否是版本bug,我是从6.2.5 升级到8.0.3 的,升级之后发现原来6.2.5 的api上传文件的接口用不了了。
后来重新安装一套逐个版本测试,发现从7.1.5 开始就无法使用,8.0.3也无法使用。其中7.1.5 开始就开始使用了python3版本。
1、seafile-server 6.2.5 调用展示:
原来的内容:
脚本调用api上传文件:返回成功(脚本内容查看文章最后)
[root@node2 yw]# ll
总用量 8
-rw-r--r-- 1 root root 1703 3月 4 10:33 aa.sh
-rw-r--r-- 1 root root 3 3月 3 20:03 bb.txt
[root@node2 yw]# bash aa.sh bb.txt test
调用的命令:
curl -s -d "username=admin@qq.com&password=123456" http://172.16.88.220:8000/api2/auth-token/ | awk -F '"' '{print }'
获取到的token: ae4f7f2df0afa5904d467f40bb603e9fa2748c0f
获取到的上传URL:
http://172.16.88.220:8082/upload-api/0e3a7f6e-1701-4810-9cfa-e94d8d023a88
c214f852857a483fd01c00e344f6e4353842c7a1[2021-03-04 10:39:17] - INFO: 上传文件bb.txt[成功]
上传后网盘可以看到:
2、升级到7.0.5,再次测试
因为7.0 开始不再对外开放8000端口,我通过nginx代理设置了域名iflytek.seafile.com,并且在页面上面改了SERVICE_URL 和 FILE_SERVER_ROOT 的值,测试页面上传正常。
api上传之前:
脚本调用api接口:返回成功
[root@node2 yw]# bash aa.sh cc.txt test
调用的命令:
curl -s -d "username=admin@qq.com&password=123456" http://iflytek.seafile.com/api2/auth-token/ | awk -F '"' '{print }'
获取到的token: ae4f7f2df0afa5904d467f40bb603e9fa2748c0f
获取到的上传URL:
http://iflytek.seafile.com/seafhttp/upload-api/ca7a910a-ccb6-486f-8952-a9f9d8e936bb
上传执行的命令:
curl -s -H "Authorization: Token ae4f7f2df0afa5904d467f40bb603e9fa2748c0f" -F file=@cc.txt -F filename=cc.txt -F parent_dir=test http://iflytek.seafile.com/seafhttp/upload-api/ca7a910a-ccb6-486f-8952-a9f9d8e936bb -F replace=1
560eebe94ac507594a8323ddb803bbbd34e3eed8[2021-03-04 11:21:12] - INFO: 上传文件cc.txt[成功]
上传之后可以看到cc.txt文件:
3、7.0.5 升级到7.1.5,升级之后页面上传正常
调用api上传前:
脚本调用api接口:Permission denied
[root@node2 yw]# bash aa.sh dd.txt test
调用的命令:
curl -s -d "username=admin@qq.com&password=123456" http://iflytek.seafile.com/api2/auth-token/ | awk -F '"' '{print }'
获取到的token: ae4f7f2df0afa5904d467f40bb603e9fa2748c0f
获取到的上传URL:
http://iflytek.seafile.com/seafhttp/upload-api/72d512c9-c9a8-452f-bfa2-376c2823ea42
上传执行的命令:
curl -s -H "Authorization: Token ae4f7f2df0afa5904d467f40bb603e9fa2748c0f" -F file=@dd.txt -F filename=dd.txt -F parent_dir=test http://iflytek.seafile.com/seafhttp/upload-api/72d512c9-c9a8-452f-bfa2-376c2823ea42 -F replace=1
{"error": "Permission denied."}[2021-03-04 11:28:21] - INFO: 上传文件dd.txt[成功]
最后是没有上传成功!!!!!!!!!
对比了页面上传的接口参数发现确实不一样:
8.0.3的post参数:
6.2.5的post参数:
脚本内容:
#!/bin/bash
# 要上载的文件名
filename=$1
# 要上传到资料库的哪个文件夹
res_path=$2
# seafile账号
username='admin@qq.com'
# seafile密码
password='123456'
# seafile资料库ID(可在页面上面查到)
repo='cfba8d77-d77d-4fce-b489-fa54123e5afe'
# seafile地址
seafile_url='http://172.16.88.220:8000'
# 7.0 之后用nginx80端口代理 我的url是这样的
# seafile_url='http://iflytek.seafile.com'
if [ $# -ne 2 ];then
echo -e "ERROR: 参数错误,请检查!\nUsage: $0 /tmp/test.txt Xcode"
exit
fi
# 获取账户的Token
Token=`curl -s -d "username=$username&password=$password" $seafile_url/api2/auth-token/ | awk -F '"' '{print $4}'`
echo -e "调用的命令:\ncurl -s -d \"username=$username&password=$password\" $seafile_url/api2/auth-token/ | awk -F '\"' '{print $4}'"
echo "获取到的token: $Token"
echo -e
# 获取上传链接
upload_link=`curl -s -H "Authorization: Token $Token" -H 'Accept: application/json; indent=4' "$seafile_url/api2/repos/$repo/upload-link/" | awk -F '"' '{print $2}'`
echo "获取到的上传URL:$upload_link"
#echo $upload_link
# 上传文件到seafile库的特定目录
echo "上传执行的命令:\n curl -s -H \"Authorization: Token $Token\" -F file=@${filename} -F filename=${filename} -F parent_dir=${res_path} ${upload_link} "
curl -s -H "Authorization: Token $Token" -F file=@${filename} -F filename=${filename} -F parent_dir=${res_path} ${upload_link}
if [ $? == 0 ];then
upload_time=`date +"%F %T"`
echo "[$upload_time] - INFO: 上传文件$filename[成功]"
else
upload_time=`date +"%F %T"`
echo "[$upload_time] - ERROR: 上传文件$filename[失败]"
fi
标签:8.0,api,上传,upload,server,7.1,com,txt,seafile 来源: https://www.cnblogs.com/myfblogs/p/16108133.html