后端接口设计:
- setting中配置文件上传路径:
media_root = base_dir / 'yourfiles'
- 创建文件上传模型,使用filefield模型字段存储文件对象:
class uploadfile(models.model): """上传文件模型""" file = models.filefield('文件', help_text='文件上传') info = models.jsonfield('文件信息', help_text='文件信息', default=list, null=true, blank=true)
上传的文件保存在项目目录下的yourfiles目录下,部署以后,存放在容器的/app/yourfiles目录下
- 创建序列化器、配置urls等,在序列化器中新增一个方法,用于预览图片:
class uploadfileviewset(viewsets.modelviewset): """文件上传视图集""" queryset = uploadfile.objects.all() serializer_class = uploadfileserializer ... @action(['get'], detail=true) def show(self, request, pk, *args, **kwargs): # 获取对象 try: instance = self.get_object() # instance.file.size() return fileresponse(instance.file.open(mode='rb')) except: return response.response({'msg':'not found!'}, status=404)
调用接口返回图片文件:
前端处理
在axios封装的api请求中新增:
// 查看图片 showimg(id){ return api.get(`/upload/${id}/show/`, {responsetype:'blob'}) // 后端返回的是一张图片,这里一定要加responsetype },
注意这里一定要新增 {responsetype:'blob'}。后端返回的是一个图片文件:
前端展示图片的方法中通过window.url获取图片文件的url,作为img标签的src值:
this.imageurl = window.url.createobjecturl(response.data);
总结
到此这篇关于vue前端如何处理后端接口返回的图片的文章就介绍到这了,更多相关vue处理后端接口返回图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论