#python #сервер #http #post
Помогите разобраться в чем проблема. Хочу залить файл на сервер, использую библиотеку requests. Маленький файл льется отлично, с большим файлом беда - не уходит. Код: import requests r = requests.get('запорос на урл') upload_url = r['урл сервера'] file = {'video_file': ('1.mp4', open('S:/1.mp4', 'rb'))} r2 = requests.post(upload_url, files=file) ответ питона Traceback (most recent call last): File "S:/charm/projects/2.py", line 13, inr2 = requests.post(upload_url, files=file) File "S:\charm\projects\venv\lib\site-packages\requests\api.py", line 112, in post return request('post', url, data=data, json=json, **kwargs) File "S:\charm\projects\venv\lib\site-packages\requests\api.py", line 58, in request return session.request(method=method, url=url, **kwargs) File "S:\charm\projects\venv\lib\site-packages\requests\sessions.py", line 494, in request prep = self.prepare_request(req) File "S:\charm\projects\venv\lib\site-packages\requests\sessions.py", line 437, in prepare_request hooks=merge_hooks(request.hooks, self.hooks), File "S:\charm\projects\venv\lib\site-packages\requests\models.py", line 308, in prepare self.prepare_body(data, files, json) File "S:\charm\projects\venv\lib\site-packages\requests\models.py", line 496, in prepare_body (body, content_type) = self._encode_files(files, data) File "S:\charm\projects\venv\lib\site-packages\requests\models.py", line 159, in _encode_files fdata = fp.read() MemoryError Повторю, маленькие файлы грузит отлично. Что не так?
Ответы
Ответ 1
Попробуйте использовать requests-toolbelt: # pip install requests-toolbelt from requests_toolbelt import MultipartEncoder # pip install requests import requests upload_file = open('S:/1.mp4', 'rb') payload = MultipartEncoder({'1.mp4': upload_file}) rs = requests.post('', data=payload , headers={'Content-Type': payload.content_type}) print(rs) Ответ 2
Если сервер может напрямую файл принимать (в http message-body), то достаточно файл как data передать: import requests with open('1.mp4', 'rb') as file: requests.post(url, data=file)Ответ 3
Чтобы послать файл на сервер, используя multipart/form-data Сontent-Type как
Комментариев нет:
Отправить комментарий