[PYTHON] django-tastypie에 POST 요청이있는 파일을 어떻게 업로드합니까? [복제]
PYTHONdjango-tastypie에 POST 요청이있는 파일을 어떻게 업로드합니까? [복제]
현재 API 요청을 cURL로 처리하고 있습니다.
curl --dump-header - -H "Content-Type: application/json" -X POST --data '{"username":"theusername", "api_key":"anapikey", "video_title":"a title", "video_description":"the description"}' http://localhost:8000/api/v1/video/
하지만 지금은 업로드에 비디오 파일을 추가 할 수 있어야합니다. 나는 Tastypie로 파일을 업로드하는 것에 대해 몇 시간 동안 주변을 둘러 보았고 나는 한 가지 확실한 응답을 찾지 못했다. Base64 인코딩을 추가해야합니까? 그렇다면 어떻게? POST 요청으로 파일을 업로드 한 후 파일에 어떻게 액세스합니까? 그냥 정상적인 요청. 파일 작업? 나는 파일을 데이터베이스에 저장하려고하지 않고 그냥 파일 경로를 가져온다.
#Models.py
class Video(models.Model):
video_uploader = models.ForeignKey(User)
video_path = models.CharField(max_length=128)
video_views = models.IntegerField(default=0)
upload_date = models.DateTimeField(auto_now_add=True)
video_description = models.CharField(max_length=860)
video_title = models.SlugField()
필자는 Tastypie 용 파일 업로드 시스템을 구현하는 방법을 완전히 혼동하므로 어떤 도움을 주시면 감사하겠습니다. 감사!
해결법
-
==============================
1.django-tastypie를 통해 MultiPart에서 파일을 업로드하는 방법입니다.
django-tastypie를 통해 MultiPart에서 파일을 업로드하는 방법입니다.
Models.py
class Video(models.Model): video_uploader = models.ForeignKey(User) video = models.FileField(_('Video'), upload_to='path_to_folder/') # save file to server video_views = models.IntegerField(default=0) upload_date = models.DateTimeField(auto_now_add=True) video_description = models.CharField(max_length=860) video_title = models.SlugField()
Api.py
class MultipartResource(object): def deserialize(self, request, data, format=None): if not format: format = request.META.get('CONTENT_TYPE', 'application/json') if format == 'application/x-www-form-urlencoded': return request.POST if format.startswith('multipart'): data = request.POST.copy() data.update(request.FILES) return data return super(MultipartResource, self).deserialize(request, data, format) class VideoResource(MultipartResource, ModelResource): """ Inherit this Resource class to `MultipartResource` Class """ # Assuming you know what to write here ...
그런 다음 CURL을 통해
curl -H "Authorization: ApiKey username:api_key" -F "video=/path_to_video/video.mp3" -F "video_title=video title" http://localhost:8000/api/v1/video/ -v
from https://stackoverflow.com/questions/14119031/how-do-you-upload-a-file-with-a-post-request-on-django-tastypie by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 읽기라는 PIPE (0) | 2018.11.19 |
---|---|
[PYTHON] Excel에서 차트를 파이썬을 사용하여 이미지로 내보내기 (0) | 2018.11.19 |
[PYTHON] 파이썬으로 .doc 파일 읽기 (0) | 2018.11.19 |
[PYTHON] USB 장치 식별 (0) | 2018.11.19 |
[PYTHON] 파이썬으로 페이스 북에 로그인하기 (0) | 2018.11.19 |