上载带有Angular到Django Rest框架编码错误的图像
我第一次使用DRF,我正试图通过Angular 8上传一张图像 我可以通过邮递员上传图像,没有任何问题,但是当我使用Angular发出post请求时,我收到以下错误消息:上载带有Angular到Django Rest框架编码错误的图像,angular,django-rest-framework,Angular,Django Rest Framework,我第一次使用DRF,我正试图通过Angular 8上传一张图像 我可以通过邮递员上传图像,没有任何问题,但是当我使用Angular发出post请求时,我收到以下错误消息:JSON解析错误-'utf-8'编解码器无法解码第153位的字节0xff:invalid start byte 我曾尝试将enctype=“multipart/form data”添加到表单标记中,但这似乎没有任何区别 如果这里没有一个简单的解决方案 型号.py class File(models.Model): photo
JSON解析错误-'utf-8'编解码器无法解码第153位的字节0xff:invalid start byte
我曾尝试将enctype=“multipart/form data”
添加到表单标记中,但这似乎没有任何区别
如果这里没有一个简单的解决方案
型号.py
class File(models.Model):
photo = models.ImageField(blank=False, null=False)
def __str__(self):
return self.photo.title
class FileUploadParser(APIView):
parser_class = (FileUploadParser,)
def post(self, request, *args, **kwargs):
file_serializer = FileSerializer(data=request.data)
if file_serializer.is_valid():
file_serializer.save()
return Response(file_serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
照片服务.ts
upload(formData): Observable<any> {
return this.http.post<any>(
`${this.apiUrl}/upload/`,
formData,
this.httpOptions
);
}
handleSelectPhoto(event) {
if (event.target.files.length > 0) {
const photo = event.target.files[0];
this.photoForm.get("photo").setValue(photo);
}
}
handleSubmit(title) {
const photoFile = this.photoForm.get("photo").value;
if (!photoFile) {
return;
}
const formData = new FormData();
formData.append("photo", photoFile);
this.photoService.upload(formData).subscribe(res => {
console.log(res);
});
}
视图.py
class File(models.Model):
photo = models.ImageField(blank=False, null=False)
def __str__(self):
return self.photo.title
class FileUploadParser(APIView):
parser_class = (FileUploadParser,)
def post(self, request, *args, **kwargs):
file_serializer = FileSerializer(data=request.data)
if file_serializer.is_valid():
file_serializer.save()
return Response(file_serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
我假设您使用的是
JSONParser
而不是文件MultiPartParser
,FileUploadParser
,等等
请参见下面的示例
class FileUploadView(CreateAPIView):
parser_classes = (MultiPartParser,)
参考:添加您的
视图
@Anjaneyulubata,我已经添加了我的视图。我正在使用FileUploadParser。