i'm using requests module django , trying send file form when "invalid file :" error when try open file. think it's trying open filename string instead of opening actual file. how can go opening actual file form instead of trying open filename, can send payload?
class adddocumentview(loginrequiredmixin, successmessagemixin, createview): login_url = reverse_lazy('users:login') form_class = fileuploadform template_name = 'docman/forms/add-document.html' success_message = 'document added' def form_valid(self, form): pk = self.kwargs['pk'] user = get_object_or_404(user, pk=pk) file = form.save(commit=false) file.user = user if not self.post_to_server(file, user.id): file.delete() return super(adddocumentview, self).form_valid(form) def post_to_server(self, file, cid): url = 'https://example.herokuapp.com/api/files/' headers = {'token': '333334wsfsecrettoken'} # error here when trying open file payload = {'file': open(file, 'rb'), 'client_id': cid} r = requests.post(url, data=payload, headers=headers) print(r.text) if r.status_code == requests.codes.ok: return true else: return false
open(file, 'rb')
receiving django model object file = form.save(commit=false)
line, not file. send original file. can like
file = self.request.files.get('name') self.post_to_server(file, user.id)
edit:
no need call open on file, it's open. open(file, 'rb')
takes file path. file open above lines use that. best practice
files = {'file': file} r = requests.post(url, files=files, data=payload)
Comments
Post a Comment