2017-04-18 16 views
3

私はたくさんの検索をしていますが、私が探しているものに対する答えは見つかりませんでした。file.uploadと要求を使用してファイルをスラックにアップロードする方法

/tmpからファイルをアップロードしようとしていますが、Pythonリクエストを使用していますが、{"ok":false,"error":"no_file_data"}が返され続けます。ほとんどアドバイスに従うことをしようと

file={'file':('/tmp/myfile.pdf', open('/tmp/myfile.pdf', 'rb'), 'pdf')} 
payload={ 
     "filename":"myfile.pdf", 
     "token":token, 
     "channels":['#random'], 
     "media":file 
     } 

r=requests.post("https://slack.com/api/files.upload", params=payload) 

は、HTTP経由でファイルを送信するhere

+0

私はAPIドキュメントで 'media'のPARAMを見ていないです。 – jordanm

+0

これは413エラーを返し、 'r.text'はHTMLを返します('/tmp/myfile.pdf '、' r ')。 '要求を満たすことができませんでした。悪い要求 ' –

答えて

8

投稿を他のデータを送信するよりも少し余分な作業が必要です。コンテンツタイプを設定してファイルとそのすべてを取得する必要があるため、要求の​​パラメータに含めることはできません。

.postメソッドのパラメータfilesにファイル情報を渡して、すべてのファイル転送情報を要求に追加できるようにする必要があります。

my_file = { 
    'file' : ('/tmp/myfile.pdf', open('/tmp/myfile.pdf', 'rb'), 'pdf') 
} 

payload={ 
    "filename":"myfile.pdf", 
    "token":token, 
    "channels":['#random'], 
} 

r = requests.post("https://slack.com/api/files.upload", params=payload, files=my_file) 
+0

ありがとう!これは私のノートパソコンで私のPython上で働いた。私はnodeMCU上のmicropythonで次にテストしたいと思います。ところで、私は "txt"ファイルをuploadeし、スラックチャンネルのスニペットとして現れました。私は大きなログファイルをアップロードするつもりですので、スラックのサイズに制限がありますか? – Eradicatore

+0

まあ、それはそのままマイクロパイソンでは動作しません。 "ファイル"パラメータはpostメソッドにはありません。あなたが考えられる方法があれば教えてください。 – Eradicatore

+0

私はあなたのMicroPythonフォーラム投稿に答えました:https://forum.micropython.org/viewtopic.php?p=23388#p23388。これを答えに入れてください。 –

関連する問題