2017-04-18 6 views
3

나는 많은 것을 수색 해 왔으며 내가 찾고있는 것에 대한 답을 찾지 못했습니다.file.upload 및 요청을 사용하여 파일을 여유롭게 업로드하는 방법

/tmp에서 파이썬 요청을 사용하여 파일을 업로드하려고하는데 계속 {"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

게시 된 다른 데이터를 보내는 것보다 조금 더 추가 작업이 필요합니다. 콘텐츠 유형을 설정하고 파일과 그 모든 파일을 가져와야하므로 요청의 payload 매개 변수에 포함시킬 수 없습니다.

.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

감사! 이것은 내 노트북에 파이썬에 내 일을했습니다. 나는 nodeMCU에서 micropython으로 다음 테스트를하고 싶다. BTW, 나는 "txt"파일을 uploade하고 슬랙 채널에 스 니펫으로 나타났습니다. 큰 로그 파일을 업로드 할 예정입니다. 따라서 여유 시간에 잘라내는 크기에 제한이 있습니까? – Eradicatore

+0

글쎄, 마이크로 파이썬에서는 작동하지 않습니다. "files"매개 변수는 post 메소드에 없습니다. 가능할 수있는 아이디어가 있다면 알려주십시오. – Eradicatore

+0

MicroPython 포럼 게시물 (https://forum.micropython.org/viewtopic.php?p=23388#p23388)에 답변했습니다. 이 질문에 답을 입력하십시오. –