Skip to content

Latest commit

 

History

History
125 lines (106 loc) · 4.69 KB

020.040.上传文件.md

File metadata and controls

125 lines (106 loc) · 4.69 KB

上传文件是一个比较复杂的过程,具体可以参照网宿云存储

获取上传token

POST /v1/store/token

  • 请求地址 /v1/store/token POST
  • 请求方式 JSON/Http POST
  • 请求参数
参数 类型 描述
* name string 文件名
* hash string 文件哈希. 如果文件存在则自动创建文件
* parent string 上传的父路径的uuid(可选). 默认为根目录('')
* path string 上传路径(可选) 默认为根目录('')
* originalFilename string 原始文件名

注意:

  • 当name和path都不为空时,服务器上实际生成的文件为 ${path}/${name}

  • 当name和path全部为空时,服务器上实际生成的文件为 /${originalFilename}

  • 当name和path以及orignalFilename全部为空时,服务器上实际生成的文件为 /${某随机文件名}.tmp

  • 当name为空,path不为空时,尝试按如下规则生成文件:

1. path 在服务器上已经存在,且为文件夹,尝试在该文件夹下面创建{originalFilename}的文件
2. path 在服务器上已经存在,且为文件,忽略创建过程
3. path 在服务器上不存在,尝试创建{path}的文件
  • 返回参数
参数 Type Description
uploadUrl string 上传地址
type int 上传的类型
token string 上传token
version int 上传token的版本号

服务器返回:

{
    "status": 200,
    "result": {
        "userId": 1,
        "token": "0a3836b4ef298e7dc9fc5da291252fc4ac3e0c7f:Zjk2YWUzYTc4NWM1MWM1ZjllYjVmYmNiM2Q4MWYwMTAyZGIzYjk0ZA==:eyJzY29wZSI6Im90aGVyLXN0b3JhZ2UiLCJkZWFkbGluZSI6IjE1MTczNzMzNDM4OTEiLCJvdmVyd3JpdGUiOjEsImZzaXplTGltaXQiOjAsImNhbGxiYWNrVXJsIjoiaHR0cDovL2FwaS5ibG9nMTIwLmNvbS92MS9jYWxsYmFjay93cy9wb3N0IiwiY2FsbGJhY2tCb2R5Ijoic2l6ZT0kKGZzaXplKSZoYXNoPSQoaGFzaCkma2V5PSQoa2V5KSZtaW1lVHlwZT0kKG1pbWVUeXBlKSZpcD0kKGlwKSZhdmluZm89JChhdmluZm8pJmJ1Y2tldD0kKGJ1Y2tldCkmdXJsPUBxenl1cmxzdGFydCQodXJsKUBxenl1cmxlbmQmdXNlcklkPTEmZmlsZU5hbWU9QHF6eWZpbGVzdGFydCQoZm5hbWUpQHF6eWZpbGVlbmQiLCJzYXZlS2V5IjoidXNlci11cGxvYWQvLzIwMTgwMTMwLzExNTE3Mjg2OTQzODkyLnRtcCJ9",
        "type": 0,
        "uploadUrl": "http://xxx.xxx.com/file/upload",
        "version": 1
    },
    "code": "OK",
    "success": true,
    "token": "..."
}

result 字段下 token 为上传所需token

秒传功能

当传入了文件的hash的时候,即表示开启秒传功能。 如果服务器上文件不存在,则正常返回上传token。如果服务器上文件存在,则返回新创建的文件信息,如:

post /v1/store/token:

{
	"path":"/d/e/f/g",
	"hash":"lgYD1AjrK5Daxq-Dt0qemSPKdNbh",
	"name":"5系标轴2.0.pdf.asset.1518484456597.pdf"
}

服务器返回:

{
    "status": 200,
    "result": {
        "uuid": "0233a0a43b594fab8890b2f8359595bd",
        "storeId": "lgYD1AjrK5Daxq-Dt0qemSPKdNbh",
        "userId": 5,
        "pathId": "f2624b13bfdce9efbc842bd30f764e69",
        "lft": 6,
        "rgt": 7,
        "path": "/d/e/f/g/5系标轴2.0.pdf.asset.1518484456597.pdf",
        "name": "5系标轴2.0.pdf.asset.1518484456597.pdf",
        "ext": ".pdf",
        "size": 5458017,
        "parent": "06f14e9508a44fc8993fa97faebc55e0",
        "type": 0,
        "atime": 1532794215590,
        "ctime": 1532794215590,
        "mtime": 0,
        "version": 0,
        "locking": false
    },
    "code": "OK",
    "success": true,
    "token": "..."
}

如果文件不存在,使用token字段上传文件。

服务器返回

{
    "status": 200,
    "result": {
        "name": "qzy-upload-noname.1519706748282.tmp",
        "parent": ":torrent",
        "token": "0a3836b4ef298e7dc9fc5da2912...",
        "type": 0,
        "uploadUrl": "http://upload-vod-v1.6pan.cn",
        "version": 1
    },
    "code": "OK",
    "success": true,
    "token": "..."
}

参照云存储文档上传文件。