关于seafile-server 7.1.5 和 8.0.3 api上传文件bug说明

2022/4/11 6:15:53

本文主要是介绍关于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

 




这篇关于关于seafile-server 7.1.5 和 8.0.3 api上传文件bug说明的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程