釘釘媒體文件上傳


  最近一個項目需要在釘釘中導出excel。釘釘的文件導出都是工作通知的形式導出。工作通知只能附帶媒體文件(media,釘釘自定義的說法),所以采取的策略是先在服務端生成要導出的excel文件,在通過釘釘上傳媒體文件接口生成媒體文件,然后通過釘釘的工作通知下發給用戶。中間被上傳媒體文件接口卡了半天,記錄一下,也希望能幫助到遇到相同問題的同行。最后吐槽下釘釘的文檔寫的是真的簡略。

  回到正題,首先來看釘釘的文檔。

  

  對數據格式和文件名稱都有要求。這個media參數是重點。

  最開始的時候是直接用的php的curl做post請求,代碼如下,其中'Content-Type: application/json; charset=utf-8'設置為了multipart/form-data;,$data就是上面的media,但是釘釘的接口返回提示是參數類型不符合要求。

 

 

 

 

  這就讓人納悶了。在網上查詢了下,貌似釘釘的意思是要手動拼接form-data數據,然后傳給他。在網上看了下各種寫法,最后翻了下sdk的源碼,找到上傳文件的地方,研究了下,根據sdk的源碼稍微微調了下,最后成功把文件上傳到釘釘了。

 

下面這張圖里面的$delimiter變量是分割符,$file是文件,用file_get_contents讀取。

  

  

  從上面的圖可以看到是有個專門的函數拼接數據的,這就是這次的重點。放下面

 

   sdk里面是寫了多參數的循環處理,我這只用上傳圖片就給簡化了,只寫了一個文件上傳,現在可以看到,為啥釘釘會說你參數類型不對了,因為人家根本就不讀你的header頭。name=media ,filename就是你要上傳的文件。

拼接完后按照正常的curl發出個post請求,搞定。

  文件上傳的post請求也貼下,還是給設置了header頭。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM