资源上传请求

直传方式上传

在 OSS 中有二种上传方式,本地上传直传,但在正式业务中还有客户端,所以会存在三个终端,分别是客户端服务端OSS 端。部分技术服务商为了省事采用了客户端传资源到服务端,再由服务端上传资源给 OSS 端,这样做能减少很多的工作量,但对服务器来说浪费了大量的宽带资源,因为服务端接收了一波数据又上传了一波数据。

所以在我们的框架系统中 OSS 都是采用直传的方式进行,直传的运行方式是客户端直接传资源给 OSS 端,上传成功后 OSS 端会推送资源基础数据给服务端,再由服务端对数据进行消化。这样做服务端只承担了很少量的数据接收,而宽带的压力完全交给了 OSS 服务商,并且还有快速的上行宽带可享用。

CareyShop(本地上传)

接口描述:

  • careyshop模块,CareyShop(本地上传)。

请求 URL:

请求方式:

  • POST

是否授权:

  • 需要授权

请求参数:

单文件上传
资源上传请求 - 图1

多文件上传
资源上传请求 - 图2

响应参数:

参数名 类型 是否返回 示例值 描述
status integer 200 状态码
message string success 消息信息
data array [] 返回数组
data 类型 是否返回 描述
parent_id integer 所属资源编号
name string 资源名称(来自于参数x:filename)
ext string 资源后缀
size string 资源大小
pixel array 资源像素,非图片资源则为空
hash string 资源Hash值
path string 资源内部路径(资源标识)
url string 资源外链地址
protocol string 资源协议(模块名)
type integer 资源类型 0=图片 1=附件 2=目录
create_time datetime 创建时间
update_time datetime 更新时间
storage_id integer 资源编号
status integer 是否上传成功 200=成功 其他=失败
oss string OSS调用地址

单文件 响应示例:

  1. {
  2. "status": 200,
  3. "message": "success",
  4. "data": [
  5. {
  6. "parent_id": 0,
  7. "name": "about.jpg",
  8. "ext": "jpg",
  9. "size": 813156,
  10. "pixel": {
  11. "width": 600,
  12. "height": 2005
  13. },
  14. "hash": "26c675651a5fe87a130f81faf815e02d94d0080b",
  15. "path": "\\uploads\\files\\20180528\\6d2f73ced2549b266f4ad3a0b2e33e43.png",
  16. "url": "careyshop.cn/uploads/files/20180528/6d2f73ced2549b266f4ad3a0b2e33e43.jpg?type=careyshop",
  17. "protocol": "careyshop",
  18. "type": 0,
  19. "create_time": "2018-05-28 22:36:39",
  20. "update_time": "2018-05-28 22:36:39",
  21. "storage_id": 36,
  22. "status": 200,
  23. "oss": "careyshop.cn/oss?url="
  24. }
  25. ]
  26. }

多文件 响应示例:

  1. {
  2. "status": 200,
  3. "message": "success",
  4. "data": [
  5. {
  6. "parent_id": 0,
  7. "name": "1.png",
  8. "ext": "png",
  9. "size": 36027,
  10. "pixel": {
  11. "width": 855,
  12. "height": 386
  13. },
  14. "hash": "c4dbfd5898f341da05c5102853fa8b0019cd6cb7",
  15. "path": "\\uploads\\files\\20180528\\83fe3f3fa64aacbb6cbad5d820c7f57d.png",
  16. "url": "careyshop.oruei.com/uploads/files/20180528/83fe3f3fa64aacbb6cbad5d820c7f57d.png?type=careyshop",
  17. "protocol": "careyshop",
  18. "type": 0,
  19. "create_time": "2018-05-28 23:00:11",
  20. "update_time": "2018-05-28 23:00:11",
  21. "storage_id": 47,
  22. "status": 200,
  23. "oss": "careyshop.cn/oss?url="
  24. },
  25. {
  26. "parent_id": 0,
  27. "name": "2.png",
  28. "ext": "png",
  29. "size": 40295,
  30. "pixel": {
  31. "width": 855,
  32. "height": 419
  33. },
  34. "hash": "7fe2550223abf0d4619e4d5ef39b8dbdd36cc068",
  35. "path": "\\uploads\\files\\20180528\\1781d6963ec8e1ead76afa976cebfd3c.png",
  36. "url": "careyshop.oruei.com/uploads/files/20180528/1781d6963ec8e1ead76afa976cebfd3c.png?type=careyshop",
  37. "protocol": "careyshop",
  38. "type": 0,
  39. "create_time": "2018-05-28 23:00:11",
  40. "update_time": "2018-05-28 23:00:11",
  41. "storage_id": 48,
  42. "status": 200,
  43. "oss": "careyshop.cn/oss?url="
  44. },
  45. {
  46. "status": 500,
  47. "message": "上传文件后缀不允许"
  48. }
  49. ]
  50. }

备注:

  1. careyshop模块外,其他模块只支持单文件上传,如果需要批量上传请自行循环处理。

  2. 请务必判断数组中的对象status字段是否为200,否则有可能上传失败,返回错误(message字段)信息。

  3. 在 OSS 的概念中path字段即是存放资源的路径,也是资源的系统标识,所以不要直接拿path做链接。

  4. 直接通过 API 接口获取OSS资源时链接会过长,这时候就可以对方法进行封装再通过参数oss的地址调用。

七牛云 KODO

接口描述:

  • qiniu模块,七牛云 KODO 直传方式上传。

请求 URL:

请求方式:

  • POST

是否授权:

  • 需要授权

请求参数:

资源上传请求 - 图3

响应参数:

参数名 类型 是否返回 示例值 描述
status integer 200 状态码
message string success 消息信息
data array [] 返回数组
data 类型 是否返回 描述
parent_id integer 所属资源编号
name string 资源名称(来自于参数x:filename)
ext string 资源后缀
size string 资源大小
pixel array 资源像素,非图片资源则为空
hash string 资源Hash值
path string 资源内部路径(资源标识)
url string 资源外链地址
protocol string 资源协议(模块名)
type integer 资源类型 0=图片 1=附件 2=目录
create_time datetime 创建时间
update_time datetime 更新时间
storage_id integer 资源编号
status integer 是否上传成功 200=成功 其他=失败
oss string OSS调用地址

响应示例:

  1. {
  2. "data": [
  3. {
  4. "create_time": "2018-05-28 23:16:23",
  5. "ext": "png",
  6. "hash": "FsTb_ViY80HaBcUQKFP6iwAZzWy3",
  7. "name": "1.png",
  8. "parent_id": 0,
  9. "pixel": {
  10. "height": 386,
  11. "width": 855
  12. },
  13. "protocol": "qiniu",
  14. "size": 36027,
  15. "status": 200,
  16. "storage_id": 50,
  17. "type": 0,
  18. "update_time": "2018-05-28 23:16:23",
  19. "path": "uploads/files/20180528/6e60853dedfcfdf0.png",
  20. "url": "p2oo9yitf.bkt.clouddn.com/uploads/files/20180528/6e60853dedfcfdf0.png?type=qiniu",
  21. "oss": "careyshop.cn/oss?url="
  22. }
  23. ],
  24. "message": "success",
  25. "status": 200
  26. }

错误响应:

  1. {
  2. "error": "bad token"
  3. }

备注:

  1. 只支持单文件上传,如果需要批量上传请自行循环处理。

  2. 请务必判断数组中的对象status字段是否为200,否则有可能上传失败。

  3. 如上传失败,错误响应是由 OSS 服务商给出,所以和框架的结构会不同。

  4. 在 OSS 的概念中path字段即是存放资源的路径,也是资源的系统标识,所以不要直接拿path做链接。

  5. 直接通过 API 接口获取OSS资源时链接会过长,这时候就可以对方法进行封装再通过参数oss的地址调用。

  6. 技术文档请参阅 https://developer.qiniu.com/kodo

  7. 错误响应明细请参阅 https://developer.qiniu.com/kodo/api/3928/error-responses

阿里云 OSS

接口描述:

  • aliyun模块,阿里云 OSS 直传方式上传。

请求 URL:

请求方式:

  • POST

是否授权:

  • 需要授权

请求参数:

资源上传请求 - 图4

响应参数:

参数名 类型 是否返回 示例值 描述
status integer 200 状态码
message string success 消息信息
data array [] 返回数组
data 类型 是否返回 描述
parent_id integer 所属资源编号
name string 资源名称(来自于参数x:filename)
ext string 资源后缀
size string 资源大小
pixel array 资源像素,非图片资源则为空
hash string 资源Hash值
path string 资源内部路径(资源标识)
url string 资源外链地址
protocol string 资源协议(模块名)
type integer 资源类型 0=图片 1=附件 2=目录
create_time datetime 创建时间
update_time datetime 更新时间
storage_id integer 资源编号
status integer 是否上传成功 200=成功 其他=失败
oss string OSS调用地址

响应示例:

  1. {
  2. "status": 200,
  3. "message": "success",
  4. "data": [
  5. {
  6. "parent_id": 0,
  7. "name": "3a220004b7106964.png",
  8. "ext": "png",
  9. "size": 40295,
  10. "pixel": {
  11. "width": 855,
  12. "height": 419
  13. },
  14. "hash": "4D5336213F769F2FC3D93A57F2E3E4ED",
  15. "path": "uploads/files/20180528/3a220004b7106964.png",
  16. "url": "careyshop.oss-cn-hangzhou.aliyuncs.com/uploads/files/20180528/3a220004b7106964.png?type=aliyun",
  17. "protocol": "aliyun",
  18. "type": 0,
  19. "create_time": "2018-05-28 23:20:31",
  20. "update_time": "2018-05-28 23:20:31",
  21. "storage_id": 51,
  22. "status": 200,
  23. "oss": "careyshop.cn/oss?url="
  24. }
  25. ]
  26. }

错误响应:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Error>
  3. <Code>InvalidArgument</Code>
  4. <Message>The callback configuration is not base64 encoded.</Message>
  5. <RequestId>5B0C2EABB47FB8B8E56FF451</RequestId>
  6. <HostId>careyshop.oss-cn-hangzhou.aliyuncs.com</HostId>
  7. <ArgumentName>callback</ArgumentName>
  8. <ArgumentValue>eyJjYWxsYmFja1VybCI6Imh0dHBzOlC9jYXJleXNob3AuY25cL2FwaVwvdjFcL3VwbG9hZFwvbWV0aG9kXC9wdXQudXBsb2FkLmRhdGFcL21vZHVsZVwvYWxpeXVuLmh0bWwiLCJjYWxsYmFja0JvZHkiOiJyZXBsYWNlPSR7eDpyZXBsYWNlfSZwYXJlbnRfaWQ9JHt4OnBhcmVudF9pZH0mZmlsZW5hbWU9JHt4OmZpbGVuYW1lfSZtaW1lPSR7bWltZVR5cGV9JnNpemU9JHtzaXplfSZ3aWR0aD0ke2ltYWdlSW5mby53aWR0aH0maGVpZ2h0PSR7aW1hZ2VJbmZvLmhlaWdodH0mcGF0aD0ke29iamVjdH0maGFzaD0ke2V0YWd9IiwiY2FsbGJhY2tCb2R5VHlwZSI6ImFwcGxpY2F0aW9uXC94LXd3dy1mb3JtLXVybGVuY29kZWQifQ==</ArgumentValue>
  9. </Error>

备注:

  1. 只支持单文件上传,如果需要批量上传请自行循环处理。

  2. 请务必判断数组中的对象status字段是否为200,否则有可能上传失败。

  3. 如上传失败,错误响应是由 OSS 服务商给出,所以和框架的结构会不同。

  4. 在 OSS 的概念中path字段即是存放资源的路径,也是资源的系统标识,所以不要直接拿path做链接。

  5. 直接通过 API 接口获取OSS资源时链接会过长,这时候就可以对方法进行封装再通过参数oss的地址调用。

  6. 技术文档请参阅 https://help.aliyun.com/document_detail/31827.html

  7. 错误响应明细请参阅 https://help.aliyun.com/document_detail/32005.html