Django 后端获取uni-app上传的图片并保存

问题:

前端是uni-app,后端是django。
在实现单个图片上传时,前端请求后端返回报错如图:
报错信息
Django后端返回:
{“detail” : “Multipart form parse error - Invalid boundary in multipart: None”}

问题原因:

uni-app前端若设置了 ‘Content-Type’: “multipart/form-data”,
就是多次设置。

原本就已经有了,重新设置会覆盖原有表单的Content-Type=‘multipart/form-data’。

解决:

那么只需注释掉Content-Type即可上传。

  • 前端代码:
uni.uploadFile({
    url:your_url,
        //  header 注释掉
     header: {  
    //     'Content-Type': "multipart/form-data",
	       token:user_token
     },  
    filePath:that.imgList[0],
    name:'imgs',
    formData:{'uName': that.uName},
    success(res) {
        console.log('上传成功!')
    }
})
  • 后端代码:
    只做简单示例。
    序列化获取单个文件对象:
class FileSerializer(serializers.ModelSerializer):
	"""文件创建序列化"""
	files = serializers.FileField( required=True, write_only=True, label='文件')
	def validate(self, attrs):
		files = attrs.get('files')
		if not is_file(files, ['jpg', 'png', 'jpeg']):
		     raise ValidationError({'msg': '仅支持jpg,png,jpeg格式的文件。'})
	def create(self, validated_data):
		files = validated_data.pop('files')
		instance= File.objects.create(name=files.name, path=files, category=0, object_id=instance.id)

		return instance

参考来自 :
https://www.cnblogs.com/xsmile/p/12599535.html
https://blog.csdn.net/sinat_30812239/article/details/84143783
https://blog.csdn.net/dongzhiliwansui/article/details/87896418

你可能感兴趣的:(django,uni-app)