使用Django编写文件上传API

Mik*_*den 10 python django post file-upload

我有一个围绕用户上传文件的Django应用程序,我正在尝试创建一个API.基本上,这个想法是POST请求可以发送(例如使用curl)文件到我的应用程序,它将接受数据并处理它.

我如何告诉Django以这种方式收听和接受文件?所有Django的文件上传文档都围绕处理从Django中的表单上传的文件,所以我不确定如何以其他方式发布文件.

如果我能提供更多信息,我会很高兴.任何让我入门的事情都会非常感激.

Udi*_*Udi 11

创建一个小视图,忽略除POST后的每个方法,并确保它没有CSRF保护:

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponse, HttpResponseNotAllowed, HttpResponseServerError

# Imaginary function to handle an uploaded file.
from somewhere import handle_uploaded_file

@csrf_exempt
def upload_file(request):
    if request.method != 'POST':
        return HttpResponseNotAllowed('Only POST here')

    form = UploadFileForm(request.POST, request.FILES)
    if not form.is_valid():
        return HttpResponseServerError("Invalid call")

    handle_uploaded_file(request.FILES['file'])
    return HttpResponse('OK')
Run Code Online (Sandbox Code Playgroud)

另请参阅:向Django添加REST