ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-04-11 00:02:30  阅读:364  来源: 互联网

标签:8.0 api 上传 upload server 7.1 com txt seafile


 需要技术支持加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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有