我让如何从ajax formdata获取数据感到困惑。到目前为止,我只使用了请求。而且我以前从未使用过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中。但是我不知道我该怎么做才能实现这一目标。
请提供建议。
文件是通过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',
,所以我只是将其删除。