差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:server:basics:fileoperation [2019/03/14 04:36]
jk [下载缩略图]
im:server:basics:fileoperation [2022/05/19 04:11] (当前版本)
jennifer.zeng
行 1: 行 1:
 ====== 文件上传下载 ====== ====== 文件上传下载 ======
 +
 +更新时间:2021-12-31 该文档已不再维护,请看新版 3.X 文档。
 +
 +新版文档地址:[[ccim:​rest:​message|消息管理]]
  
 ---- ----
行 9: 行 13:
   * 如果选择限制的话,会在上传请求完成后返回一个 secret,只有知道这个 secret,并且是 APP 的注册用户,才能够下载文件。   * 如果选择限制的话,会在上传请求完成后返回一个 secret,只有知道这个 secret,并且是 APP 的注册用户,才能够下载文件。
   * 如果选择不限制的话,则只要是 APP 的注册用户就能够下载。   * 如果选择不限制的话,则只要是 APP 的注册用户就能够下载。
 +  * 如选择加secert限制的话,''​消息回调(包含发送前回调和发送后回调)、历史消息这些功能中涉及下载文件时,都需要在下载url中拼接secert,才能正常下载文件''​;
 +  * 拼接规则如下:
 +    <code json>
 +    {{url}}?​share-secret={{secret}}
 +    </​code>​
 +    ​
  
 ---- ----
行 46: 行 56:
  
 <code php> <code php>
-curl -X POST -H 'Content-Typemultipart/​form-data' -H 'Acceptapplication/json' ​-H '​Authorization:​ Bearer YWMtVVK6cPFqEeif2wnxtHDB7AAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnT6x89wBPGgCnBeC15W5VAU5kW2f80QS3_SQSnbEjyOtg8XCcmkvUXw' -H '​restrict-access:​ true' ​{"​type":"​formData"​} 'http://a1.easemob.com/easemob-demo/testapp/chatfiles'​+curl -X POST https://​a1.easemob.com/​easemob-demo/​testapp/​chatfiles ​-H 'AuthorizationBearer YWMtS1pRuFa-EemixAMhJgmGUAAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFp57yd7QBPGgDNLstNggrzgHV3JAbqbznTptqLhpG0fTOCaBFJZgduZA' -H 'content-typemultipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' ​ -H '​restrict-access:​ true' ​-F file=@/Users/test/9.2/Easemob/image/IMG_2953.JPG
 </​code>​ </​code>​
 +
 +**注意:**上述请求示例中''​-F file=@/​Users/​test/​9.2/​Easemob/​image/​IMG_2953.JPG''​,为环信本地文件路径,使用时请替换为自己的文件路径,否则会请求失败。
  
 === 可能返回的结果示例 === === 可能返回的结果示例 ===
行 55: 行 67:
 <code json> <code json>
 { {
-  ​"​action":​ "​post",​ +    ​"​action":​ "​post",​ 
-  "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​ +    "​application":​ "​8be024f0-e978-11e8-b697-5d598d5f8402",​ 
-  "​path":​ "/​chatfiles",​ +    "​path":​ "/​chatfiles",​ 
-  "​uri":​ "​https://​a1.easemob.com/​easemob-demo/​testapp/​chatfiles",​ +    "​uri":​ "​https://​a1.easemob.com/​easemob-demo/​testapp/​chatfiles",​ 
-  "​entities":​ [ +    "​entities":​ [ 
-    +        
-      "​uuid":​ "c66b80da-f236-11e8-b6f2-dd847737923d", +            "​uuid":​ "5fd74830-56be-11e9-822a-81ea50bb049d", 
-      "​type":​ "​chatfile",​ +            "​type":​ "​chatfile",​ 
-      "​share-secret":​ "xmuA5PI2Eei2FcUwVDtPJq_KPZcLUgikAu_GTRBgW9AFgmOn+            "​share-secret":​ "X9dIOla-EemnFYUgtUZLGyqG9Y-S01eL_ysw27NqTV1_g7Yc
-    +        
-  ], +    ], 
-  "​timestamp": ​1543317770592+    "​timestamp": ​1554371126338
-  "​duration":​ 0, +    "​duration":​ 0, 
-  "​organization":​ "​easemob-demo",​ +    "​organization":​ "​easemob-demo",​ 
-  "​applicationName":​ "​testapp"​+    "​applicationName":​ "​testapp"​
 } }
 </​code>​ </​code>​
行 91: 行 103:
 =====下载语音/​图片文件===== =====下载语音/​图片文件=====
 这里需要注意的就是,需要在 HTTP header 中带上上面返回的 share-secret 和当前登录用户的 token 才能够下载,同时注意 header 中执行的 accept 的值需要设置成 application/​octet-stream。 这里需要注意的就是,需要在 HTTP header 中带上上面返回的 share-secret 和当前登录用户的 token 才能够下载,同时注意 header 中执行的 accept 的值需要设置成 application/​octet-stream。
 +
 +uuid 和 share-secret 在文件上传成功后会返回。
  
 === HTTP Request === === HTTP Request ===
  
-^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatfiles/​{filestream}**^ +^{{:​im:​server:​basics:​get.png?​nolink&​90|}}^**/​{org_name}/​{app_name}/​chatfiles/​{uuid}**^ 
-需要在请求时对应填写{filestream},需要获取文件返回的 uuid 和 share-secret。+
 === Request Headers === === Request Headers ===
  
行 101: 行 115:
 |Content-Type|application/​json| |Content-Type|application/​json|
 |Authorization|Bearer ${token}| |Authorization|Bearer ${token}|
 +|share-secret|share-secret|
  
 === 请求示例 === === 请求示例 ===
行 186: 行 201:
  
 <WRAP half column> <WRAP half column>
-下一页:[[im:​server:​basics:​recordfiledownload|实时音视频录制]]+下一页:[[im:​server:​basics:​conferencemanage|会议管理]]
 </​WRAP>​ </​WRAP>​
 </​WRAP>​ </​WRAP>​