我很困惑如何从ajax formdata获取数据。我到现在才使用get请求。我之前从未使用过formdata。所以,我不知道如何处理数据。
我的客户端脚本如下。
var formData = new FormData();
formData.append('filename', image_file_name);
formData.append('image', image_file);
$.ajax({
url: HOST_NAME + "user/api/file_uploader/",
type: 'POST',
dataType: 'json',
timeout: 10000,
data: formData,
processData: false,
contentType: false
})
.done(function (data) {
console.log("success");
})
.fail(function (XMLHttpRequest, textStatus, errorThrown) {
console.log("failed");
})
我的服务器端代码如下。
def post(self, request, format=None):
outputLogFile("Upload Function is called...")
req_file_name = request.POST.form['filename']
req_image = request.POST.form['image']
我想将文件名转换为req_file_name并将图像转换为req_image。但我不知道应该怎样做才能实现这一目标。
请提出建议。
答案 0 :(得分:3)
通过request.FILES
而不是request.POST
访问文件,因此您应该使用:
def post(self, request, *args, **kwargs):
req_image = request.FILES["image"]
req_file_name = request.data["filename"]
当我使用它创建图像上传时,我通常将其添加到我的APIView:
class ExampleImageUpload(APIView):
parser_classes = (JSONParser, FormParser, MultiPartParser, )
不要忘记导入它们:
from rest_framework.parsers import JSONParser, FormParser, MultiPartParser
此外,您不需要dataType: 'json',
,所以我只是删除它。